This document provides code used to generate results and figures shown in the paper “Inferring time of infection from field data using dynamic models of antibody decay”.
For more information and details, please see the paper and the supporting information document.


1 Import and prepare data

observed.data.for.fitting = readRDS("Antibody_decay_data.RDS")
observed.data.for.fitting.incl.neg = readRDS("Antibody_decay_data_incl_neg.RDS")

neg.intervals = observed.data.for.fitting.incl.neg$time[which(observed.data.for.fitting.incl.neg$seroconversion.interval==T)]


kbl(observed.data.for.fitting) %>%
       kable_classic(bootstrap_options  =  c("striped", "hover","condensed"), full_width=F,html_font="Cambria",fixed_thead=T) %>%
       scroll_box(height="400px")
Pittag id time titer.pomona titer.aut lab
00141 1 0 3 NA 1
00141 1 586 2 NA 1
00701 2 0 5 6 0
00701 2 379 3 3 0
00701 2 743 2 NA 0
00701 2 1093 2 NA 0
00978 3 0 4 NA 1
00978 3 279 3 NA 1
00978 3 629 2 NA 1
00D05 4 0 7 11 0
00D05 4 969 3 5 0
00D05 4 1360 3 5 0
00D05 4 1854 3 4 0
00D05 4 2038 3 5 0
01334 5 0 6 NA 1
01334 5 380 5 NA 1
01520 6 0 4 NA 1
01520 6 360 4 NA 1
01619 7 0 4 NA 1
01619 7 352 3 NA 1
01619 7 699 3 NA 1
01744 8 0 4 5 0
01744 8 392 2 3 0
01744 8 1052 2 3 0
02107 9 0 7 9 0
02107 9 371 7 9 0
02107 9 729 3 5 0
02107 9 1092 0 3 0
03466 10 0 4 5 0
03466 10 340 5 6 0
03466 10 694 4 NA 0
03662 11 0 4 4 0
03662 11 346 3 NA 0
03662 11 1019 2 NA 1
03662 11 2116 1 NA 1
0433A 12 0 3 5 0
0433A 12 5 3 4 0
0433A 12 1043 1 4 0
04471 13 0 2 12 0
04703 14 0 7 8 0
04703 14 370 4 6 0
04703 14 720 3 4 0
04703 14 1072 3 3 0
04703 14 1476 2 NA 1
04703 14 1805 0 NA 1
04703 14 2156 0 NA 1
04703 14 2533 0 NA 1
04953 15 0 5 6 0
04953 15 265 2 3 0
04953 15 647 2 3 0
04953 15 739 3 5 0
04953 15 1359 0 3 0
05735 16 0 7 9 0
05735 16 688 5 6 0
05735 16 1062 3 NA 0
05735 16 2285 2 NA 1
05824 17 0 7 8 0
05824 17 1099 2 NA 0
05824 17 1450 1 NA 0
05824 17 1825 2 NA 1
06263 18 0 5 NA 1
06263 18 406 4 NA 1
06436 19 0 3 2 0
06436 19 313 4 3 0
06436 19 668 1 0 0
06436 19 1060 2 NA 0
06441 20 0 5 NA 1
06441 20 351 2 NA 1
06978 21 0 8 7 0
06978 21 449 4 6 0
06978 21 736 4 NA 0
07127 22 0 3 4 0
07127 22 357 3 NA 0
07127 22 725 0 NA 0
07127 22 1486 1 NA 1
07127 22 2184 0 NA 1
07478 23 0 6 7 0
07478 23 578 4 4 0
07516 24 0 5 NA 1
07516 24 365 4 NA 1
07620 25 0 9 NA 1
07620 25 351 4 NA 1
07906 26 0 8 NA 1
07906 26 357 7 NA 1
07906 26 733 4 NA 1
11709 27 0 7 NA 1
11709 27 355 7 NA 1
11709 27 735 4 NA 1
11726 28 0 4 4 0
11726 28 375 5 5 0
11726 28 861 4 NA 0
11726 28 1858 2 NA 1
11726 28 2207 1 NA 1
11726 28 2559 1 NA 1
12672 29 0 5 5 0
12672 29 168 4 4 0
12672 29 1172 4 5 0
13062 30 0 3 4 0
13062 30 166 4 5 0
13062 30 536 3 NA 0
13737 31 0 7 8 0
13737 31 435 3 4 0
14353 32 0 8 NA 1
14353 32 356 4 NA 1
14732 33 0 7 9 0
14732 33 409 3 5 0
14732 33 1113 2 5 0
14A0D 34 0 8 9 0
14A0D 34 380 7 8 0
14A0D 34 757 7 8 0
14A0D 34 851 6 8 0
14A0D 34 1124 5 6 0
14A0D 34 1472 5 6 0
14A0D 34 1949 5 NA 1
15627 35 0 4 NA 0
15627 35 350 2 NA 0
15627 35 756 3 NA 1
15660 36 0 9 NA 0
15660 36 90 8 NA 0
15690 37 0 9 9 0
15690 37 455 7 NA 1
15690 37 726 3 NA 1
15690 37 1092 4 NA 1
15690 37 1462 3 NA 1
15718 38 0 8 NA 0
15718 38 447 6 NA 1
15718 38 762 4 NA 1
15718 38 1084 4 NA 1
15718 38 1477 4 NA 1
15738 39 0 4 NA 0
15738 39 371 4 NA 0
15738 39 753 5 NA 1
15738 39 1903 4 NA 1
15748 40 0 6 NA 0
15748 40 389 5 NA 0
15748 40 765 4 NA 1
15748 40 1120 3 NA 1
15748 40 1293 3 NA 1
15748 40 1482 2 NA 1
15755 41 0 3 NA 1
15755 41 416 2 NA 1
15755 41 763 2 NA 1
15765 42 0 4 6 0
15765 42 390 1 2 0
15765 42 1053 0 1 0
15765 42 1419 0 0 0
15781 43 0 7 8 0
15781 43 463 4 NA 1
15781 43 831 3 NA 1
15803 44 0 5 NA 0
15803 44 381 3 6 0
15816 45 0 8 NA 0
15816 45 1836 5 NA 1
16031 46 0 4 NA 1
16031 46 463 3 NA 1
16039 47 0 4 4 0
16039 47 368 3 NA 0
16039 47 601 2 4 0
16039 47 685 2 3 0
16039 47 737 2 4 0
16039 47 1806 2 NA 1
16042 48 0 5 NA 1
16042 48 393 3 NA 1
16044 49 0 2 NA 0
16044 49 390 2 3 0
16055 50 0 6 7 0
16055 50 760 4 NA 1
16055 50 1482 3 NA 1
16072 51 0 3 NA 0
16072 51 127 3 NA 0
16072 51 1082 1 NA 1
16076 52 0 2 3 0
16076 52 345 2 NA 0
16081 53 0 7 NA 1
16081 53 349 5 NA 1
16081 53 729 3 NA 1
16082 54 0 6 7 0
16082 54 343 6 NA 0
16083 55 0 2 3 0
16083 55 615 1 3 0
16103 56 0 4 NA 0
16103 56 102 3 NA 0
16103 56 350 4 4 0
16103 56 756 3 NA 1
16327 57 0 8 NA 1
16327 57 357 3 NA 1
16327 57 741 3 NA 1
16329 58 0 3 NA 1
16329 58 189 2 NA 1
16329 58 557 0 NA 1
16330 59 0 5 NA 1
16330 59 380 4 NA 1
16343 60 0 3 NA 1
16343 60 648 2 NA 1
16345 61 0 9 NA 1
16345 61 485 0 NA 1
16368 62 0 5 6 0
16368 62 427 5 NA 1
16368 62 1151 4 NA 1
16377 63 0 6 NA 1
16377 63 351 5 NA 1
16377 63 702 5 NA 1
16381 64 0 6 1 0
16381 64 323 3 NA 1
16381 64 739 1 NA 1
16384 65 0 9 NA 1
16384 65 396 6 NA 1
16385 66 0 9 NA 1
16385 66 358 5 NA 1
16385 66 740 6 NA 1
16397 67 0 9 NA 1
16397 67 392 4 NA 1
16418 68 0 5 NA 1
16418 68 1130 1 NA 1
16424 69 0 3 NA 1
16424 69 331 2 NA 1
16424 69 678 2 NA 1
16424 69 1072 0 NA 1
16431 70 0 9 NA 1
16431 70 391 6 NA 1
16434 71 0 10 NA 1
16434 71 281 5 NA 1
16436 72 0 3 NA 0
16436 72 245 2 3 0
16472 73 0 4 5 0
16472 73 449 4 NA 1
16476 74 0 7 NA 1
16476 74 274 5 NA 1
16476 74 638 5 NA 1
16476 74 1006 5 NA 1
16508 75 0 5 NA 1
16508 75 390 3 NA 1
16508 75 748 3 NA 1
16520 76 0 6 NA 1
16520 76 349 6 NA 1
16520 76 727 4 NA 1
16523 77 0 7 NA 1
16523 77 275 5 NA 1
16523 77 638 6 NA 1
16955 78 0 7 7 0
16955 78 112 6 6 0
16955 78 380 5 NA 0
17514 79 0 5 9 0
20472 80 0 7 NA 1
20472 80 368 3 NA 1
21214 81 0 5 7 0
21214 81 313 3 4 0
21285 82 0 6 6 0
21285 82 117 5 4 0
21308 83 0 7 NA 1
21308 83 232 8 NA 1
21325 84 0 8 8 0
21325 84 388 7 NA 0
21433 85 0 5 5 0
21433 85 373 2 NA 0
22354 86 0 4 4 0
22354 86 1463 2 NA 0
22354 86 1856 2 1 0
23147 87 0 7 6 0
23147 87 52 6 6 0
23147 87 409 5 NA 0
23147 87 773 4 5 0
23212 88 0 7 7 0
23212 88 373 3 3 0
23212 88 401 3 4 0
23212 88 749 3 3 0
23212 88 1158 2 NA 1
23727 89 0 7 7 0
23727 89 395 3 5 0
23727 89 747 3 4 0
23727 89 1193 3 NA 1
23777 90 0 8 NA 1
23777 90 280 5 NA 1
23795 91 0 10 NA 0
23795 91 360 6 NA 0
23797 92 0 6 NA 1
23797 92 1007 4 NA 1
23806 93 0 7 7 0
23806 93 456 6 NA 1
23806 93 725 5 NA 1
23806 93 1090 5 NA 1
23813 94 0 7 NA 1
23813 94 276 5 NA 1
23813 94 626 5 NA 1
23813 94 1004 4 NA 1
23816 95 0 8 9 0
23816 95 891 3 NA 1
23823 96 0 2 NA 1
23823 96 1096 2 NA 1
23839 97 0 9 NA 1
23839 97 281 5 NA 1
23839 97 1008 3 NA 1
23845 98 0 8 NA 1
23845 98 332 4 NA 1
23845 98 1057 4 NA 1
23850 99 0 8 11 0
23850 99 89 8 10 0
23983 100 0 3 NA 1
23983 100 698 1 NA 1
23988 101 0 7 NA 1
23988 101 349 6 NA 1
23988 101 727 5 NA 1
24003 102 0 7 NA 1
24003 102 350 5 NA 1
24003 102 466 5 NA 1
24003 102 730 4 NA 1
24024 103 0 7 NA 1
24024 103 351 6 NA 1
24024 103 700 3 NA 1
24038 104 0 6 NA 1
24038 104 360 7 NA 1
24045 105 0 7 NA 1
24045 105 331 4 NA 1
24045 105 682 4 NA 1
24049 106 0 7 NA 1
24049 106 346 5 NA 1
24049 106 700 3 NA 1
24051 107 0 2 NA 0
24051 107 613 3 NA 1
24051 107 965 4 NA 1
24051 107 1314 3 NA 1
24068 108 0 9 NA 1
24068 108 1074 3 NA 1
24072 109 0 8 7 0
24072 109 797 2 NA 1
24085 110 0 7 NA 1
24085 110 387 4 NA 1
24105 111 0 9 NA 1
24105 111 273 7 NA 1
24121 112 0 9 NA 1
24121 112 392 3 NA 1
24124 113 0 7 NA 1
24127 114 0 7 NA 1
24127 114 331 3 NA 1
24127 114 679 3 NA 1
24127 114 1072 1 NA 1
24129 115 0 7 NA 1
24129 115 349 8 NA 1
24129 115 727 6 NA 1
24148 116 0 7 NA 1
24148 116 330 3 NA 1
24156 117 0 8 NA 1
24156 117 330 5 NA 1
24156 117 684 5 NA 1
24156 117 1075 5 NA 1
24162 118 0 6 NA 1
24162 118 321 5 NA 1
24269 119 0 4 5 0
24269 119 105 4 6 0
24269 119 304 3 5 0
24269 119 346 3 4 0
24269 119 805 4 NA 1
24269 119 1106 2 NA 1
24375 120 0 6 NA 1
24375 120 388 5 NA 1
24409 121 0 9 NA 1
24409 121 357 4 NA 1
24440 122 0 8 NA 1
24440 122 352 7 NA 1
24440 122 738 5 NA 1
24912 123 0 6 NA 1
24912 123 393 4 NA 1
24925 124 0 3 5 0
24925 124 484 2 NA 0
2543F 125 0 4 3 0
2543F 125 1375 1 0 0
25E35 126 0 6 7 0
25E35 126 823 4 4 0
26070 127 0 6 NA 0
26070 127 388 3 6 0
26070 127 766 4 NA 1
26070 127 1121 3 NA 1
26070 127 1482 3 NA 1
26070 127 1848 2 NA 1
26079 128 0 7 7 0
26079 128 480 3 NA 0
26079 128 1393 2 NA 1
26082 129 0 1 2 0
26082 129 162 1 3 0
26190 130 0 8 NA 0
26190 130 351 4 6 0
26190 130 826 4 NA 1
26190 130 1106 3 NA 1
26190 130 1457 3 NA 1
26190 130 1834 3 NA 1
26195 131 0 8 8 0
26195 131 477 7 NA 1
26195 131 757 5 NA 1
26195 131 1109 6 NA 1
26195 131 1486 3 NA 1
26196 132 0 3 NA 0
26196 132 382 3 2 0
26196 132 1858 1 NA 1
26225 133 0 5 7 0
26225 133 362 3 NA 0
26231 134 0 5 6 0
26231 134 364 3 NA 0
31439 135 0 4 5 0
31439 135 785 2 3 0
31439 135 1134 1 3 0
31439 135 1486 0 2 0
32E5F 136 0 3 4 0
32E5F 136 271 2 3 0
32E5F 136 615 1 2 0
32E5F 136 1087 1 2 0
32E5F 136 1777 1 NA 0
3336E 137 0 3 5 1
3336E 137 157 1 2 0
3336E 137 1130 0 0 0
3336E 137 1481 0 0 0
3336E 137 1889 0 NA 1
3360A 138 0 4 6 0
3360A 138 366 2 3 0
3360A 138 391 2 4 0
33816 139 0 3 NA 1
33816 139 730 2 NA 1
33B58 140 0 7 8 0
33B58 140 1114 5 5 0
33B58 140 1504 3 NA 0
35252 141 0 3 4 0
35252 141 1054 1 NA 0
3581A 142 0 6 5 0
3581A 142 738 5 6 0
3604E 143 0 4 4 0
3604E 143 623 4 3 0
3604E 143 979 2 NA 0
3604E 143 1109 2 NA 0
3604E 143 1345 3 3 0
36401 144 0 5 6 0
36401 144 57 6 6 0
36417 145 0 4 4 0
36417 145 361 3 3 0
36417 145 714 2 4 0
36417 145 1077 2 2 0
36417 145 1768 1 2 0
36417 145 1881 1 2 0
36813 146 0 5 NA 1
36813 146 374 5 NA 1
37468 147 0 3 4 0
37468 147 105 3 3 0
37468 147 486 2 NA 0
37471 148 0 7 NA 0
37471 148 353 3 4 0
37510 149 0 7 8 0
37510 149 351 5 NA 0
37535 150 0 5 4 0
37535 150 320 5 NA 0
37539 151 0 8 9 0
37539 151 346 6 8 0
37539 151 737 3 6 0
37539 151 1090 3 NA 1
37539 151 1495 3 NA 1
37539 151 1836 3 NA 1
37541 152 0 6 8 0
37541 152 332 5 NA 0
37541 152 500 5 NA 0
37544 153 0 4 4 0
37544 153 449 3 NA 1
37544 153 763 2 NA 1
37544 153 1087 3 NA 1
37544 153 1478 0 NA 1
37572 154 0 4 5 0
37572 154 354 3 NA 0
37572 154 744 2 3 0
37572 154 1094 3 NA 1
37572 154 1487 1 NA 1
37572 154 1843 2 NA 1
37572 154 2225 0 NA 1
37599 155 0 3 3 0
37599 155 112 3 4 0
37599 155 389 1 2 0
37599 155 738 2 NA 1
37599 155 1142 1 NA 1
37599 155 1940 0 NA 1
37630 156 0 5 4 0
37630 156 348 3 NA 1
37630 156 750 2 NA 1
37630 156 1096 2 NA 1
37646 157 0 7 NA 0
37646 157 349 6 8 0
37646 157 461 5 6 0
38958 158 0 5 6 0
38958 158 105 4 5 0
38958 158 356 5 NA 0
38958 158 725 3 4 0
38976 159 0 4 4 0
38976 159 102 3 4 0
38976 159 362 2 NA 0
38976 159 777 1 2 0
38976 159 1758 0 NA 1
38981 160 0 7 7 0
38981 160 532 3 NA 0
39013 161 0 7 8 0
39013 161 1635 2 NA 1
39013 161 2346 2 NA 1
39014 162 0 6 7 0
39014 162 410 5 NA 1
39014 162 737 2 NA 1
39031 163 0 8 9 0
39031 163 321 4 6 0
39031 163 712 2 4 0
39031 163 1063 2 NA 1
39031 163 1814 1 NA 1
39037 164 0 6 7 0
39037 164 366 2 4 0
39037 164 533 2 3 0
39037 164 1283 1 NA 1
39045 165 0 5 5 0
39045 165 318 5 NA 0
39045 165 323 4 NA 0
39045 165 713 3 3 0
39045 165 1062 4 NA 1
39430 166 0 12 NA 0
39430 166 97 8 NA 0
39430 166 360 4 NA 0
39432 167 0 6 NA 0
39432 167 349 5 NA 0
39432 167 716 4 6 0
39432 167 1169 4 NA 1
39432 167 1447 4 NA 1
39432 167 1808 3 NA 1
39454 168 0 6 NA 0
39454 168 113 5 4 0
39454 168 379 5 3 0
39454 168 728 3 2 0
41214 169 0 9 10 0
41214 169 400 5 7 0
41214 169 1157 4 NA 0
4151F 170 0 6 10 0
4151F 170 759 2 4 0
4151F 170 1463 1 NA 0
4151F 170 1811 1 NA 0
4151F 170 1841 1 NA 0
4151F 170 1989 2 4 1
41795 171 0 2 2 0
41795 171 378 2 3 0
41795 171 744 0 1 0
41795 171 1096 1 2 0
41795 171 1571 1 NA 1
41795 171 1853 0 NA 1
41795 171 2576 0 NA 1
42558 172 0 7 9 0
42558 172 315 5 7 0
42558 172 1861 4 NA 0
43388 173 0 9 9 0
43388 173 1350 3 NA 1
43929 174 0 4 6 0
43929 174 377 2 2 0
43929 174 765 1 2 0
4466C 175 0 6 7 0
4466C 175 414 3 5 0
4466C 175 786 4 5 0
4466C 175 1137 3 4 0
4466C 175 1138 3 4 0
4466C 175 1488 4 4 1
4466C 175 1890 5 NA 1
4466C 175 2220 0 NA 1
46127 176 0 7 8 1
46127 176 577 8 NA 0
46127 176 942 5 NA 0
46621 177 0 8 8 0
46621 177 54 8 10 0
46621 177 1424 2 NA 1
46766 178 0 6 NA 0
46766 178 750 4 6 0
47B58 179 0 4 6 0
47B58 179 650 2 3 0
47B58 179 1380 0 2 0
50218 180 0 3 4 0
50218 180 350 2 2 0
50218 180 1010 2 NA 0
50218 180 1378 2 NA 0
50218 180 1507 3 NA 0
50473 181 0 6 NA 0
50473 181 161 4 NA 0
50473 181 371 3 NA 0
50E01 182 0 6 7 0
50E01 182 984 3 3 0
50E01 182 1338 3 4 0
50E01 182 2534 1 NA 0
51A77 183 0 7 7 0
51A77 183 224 7 8 0
51A77 183 1694 5 NA 0
52462 184 0 9 NA 1
52462 184 71 8 NA 1
52858 185 0 4 6 0
53002 186 0 1 3 0
53002 186 370 0 NA 0
53002 186 723 1 NA 0
53002 186 2549 0 NA 1
54516 187 0 6 5 0
54516 187 206 5 5 0
54516 187 1555 3 NA 0
55860 188 0 5 6 0
55860 188 382 3 3 0
55860 188 768 3 4 0
55860 188 1114 2 NA 0
55860 188 1143 2 NA 0
55860 188 1858 3 3 0
56111 189 0 6 8 0
56111 189 614 3 NA 1
56141 190 0 5 4 0
56141 190 303 4 3 0
56141 190 898 3 2 0
56141 190 1262 3 3 0
56141 190 1620 2 2 0
56141 190 2407 1 NA 0
56141 190 2756 1 0 0
56141 190 3838 0 NA 1
58646 191 0 6 7 0
58646 191 350 4 5 0
58646 191 742 3 5 0
58646 191 1114 4 NA 1
58646 191 1472 2 NA 1
58646 191 1833 1 NA 1
58646 191 2199 1 NA 1
58709 192 0 8 NA 1
58709 192 351 6 NA 1
59147 193 0 7 NA 0
59147 193 349 5 NA 0
59843 194 0 8 8 0
59843 194 350 3 4 0
59843 194 705 1 2 0
59843 194 1149 1 NA 1
59843 194 1467 0 NA 1
60122 195 0 6 NA 1
60122 195 70 5 NA 1
62159 196 0 1 3 0
62159 196 740 1 2 1
62159 196 1090 0 1 0
62159 196 1496 1 NA 1
62159 196 1823 1 NA 1
62159 196 2173 0 NA 1
62159 196 2567 0 NA 1
62447 197 0 6 7 0
62447 197 413 3 5 0
62447 197 786 4 NA 0
63653 198 0 6 6 0
63653 198 358 3 3 0
63653 198 752 3 4 0
64939 199 0 6 8 0
64939 199 206 4 5 0
64939 199 403 4 3 0
64939 199 738 2 3 0
64939 199 1478 0 NA 0
65143 200 0 3 4 0
65143 200 324 3 2 0
65143 200 349 3 2 0
65143 200 351 3 2 0
65143 200 1380 2 NA 0
66F7D 201 0 5 7 0
66F7D 201 321 4 5 0
66F7D 201 678 3 4 0
66F7D 201 1464 2 NA 0
66F7D 201 1814 3 NA 0
66F7D 201 3051 2 NA 1
70486 202 0 9 NA 0
70486 202 380 4 NA 0
70725 203 0 2 3 0
70725 203 781 2 NA 0
70725 203 1693 2 NA 1
71112 204 0 6 7 0
71112 204 728 6 6 0
71112 204 1105 4 NA 0
71353 205 0 7 7 0
71353 205 178 0 0 0
72320 206 0 8 11 0
72320 206 345 4 6 0
72320 206 354 4 6 0
72320 206 740 4 5 0
72320 206 1113 4 NA 1
72320 206 1470 3 NA 1
72320 206 1834 3 NA 1
72320 206 2200 3 NA 1
72507 207 0 7 8 0
72507 207 359 5 8 0
73050 208 0 4 NA 0
73050 208 367 2 NA 0
73655 209 0 7 NA 1
73655 209 74 4 NA 1
7366A 210 0 4 5 0
7366A 210 687 3 NA 0
7366A 210 821 3 NA 0
7366A 210 1554 1 NA 0
74770 211 0 7 NA 0
74770 211 390 4 NA 0
74770 211 1140 2 NA 1
74770 211 1491 1 NA 1
7582C 212 0 4 6 0
7582C 212 579 3 NA 0
7582C 212 942 3 NA 0
7634C 213 0 5 5 0
7634C 213 695 4 5 0
77067 214 0 6 6 0
77067 214 342 3 2 0
77067 214 693 2 2 0
77067 214 1084 0 0 0
77067 214 1434 1 NA 1
77067 214 1825 0 NA 1
77067 214 2183 0 NA 1
77067 214 2565 0 NA 1
77808 215 0 8 NA 0
77808 215 376 5 NA 0
77808 215 1496 3 NA 1
78089 216 0 5 5 0
78089 216 340 4 3 0
78089 216 688 2 3 0
78089 216 1081 1 2 0
78483 217 0 8 6 0
78483 217 739 3 NA 0
78483 217 842 4 NA 0
78483 217 1090 3 NA 0
78483 217 1565 4 NA 1
78624 218 0 6 9 0
78624 218 325 5 5 0
78624 218 445 5 5 0
78624 218 723 4 5 0
78624 218 1089 3 4 0
78624 218 2182 1 NA 1
78746 219 0 7 NA 0
78746 219 51 7 NA 0
78746 219 401 3 3 0
78746 219 751 0 0 0
78746 219 1834 1 NA 1
79812 220 0 8 NA 1
79812 220 350 7 NA 1
79839 221 0 4 NA 1
79839 221 414 4 NA 1
79871 222 0 7 NA 1
79871 222 349 4 NA 1
79968 223 0 7 NA 1
79968 223 378 3 NA 1
79987 224 0 6 NA 1
79987 224 347 3 NA 1
80010 225 0 4 5 0
80010 225 784 4 NA 0
80043 226 0 3 NA 1
80043 226 381 1 NA 1
80157 227 0 8 NA 1
80157 227 377 7 NA 1
80221 228 0 8 NA 1
80221 228 348 3 NA 1
80337 229 0 6 NA 1
80337 229 413 5 NA 1
80450 230 0 6 8 0
80450 230 370 7 NA 0
83948 231 0 7 NA 1
83948 231 223 7 NA 1
84001 232 0 7 7 0
84001 232 331 2 4 0
84001 232 682 1 3 0
84001 232 1027 0 2 0
84596 233 0 4 4 0
84596 233 426 3 2 0
84596 233 683 4 NA 0
84976 234 0 3 4 0
84976 234 351 2 NA 0
84976 234 701 1 2 0
84976 234 1091 0 0 0
84976 234 1444 1 NA 1
84976 234 2135 0 NA 1
84976 234 2571 0 NA 1
84D5D 235 0 7 8 0
84D5D 235 394 5 7 0
84D5D 235 555 6 7 0
84D5D 235 784 6 NA 0
84D5D 235 1134 4 NA 0
85498 236 0 5 6 0
85498 236 320 3 NA 0
85498 236 500 3 NA 0
85498 236 730 2 NA 0
85589 237 0 6 7 0
85589 237 728 6 NA 0
85707 238 0 4 3 0
85707 238 502 3 NA 0
85730 239 0 9 10 0
85730 239 735 4 NA 0
85730 239 1093 3 NA 0
86034 240 0 2 NA 1
86034 240 301 0 NA 1
86076 241 0 11 10 0
86076 241 239 7 8 0
86076 241 554 6 7 0
86076 241 605 5 7 0
86076 241 1329 4 5 0
86335 242 0 4 4 0
86335 242 374 4 NA 0
86335 242 689 3 NA 0
86335 242 730 4 NA 0
86426 243 0 4 4 0
86426 243 335 2 2 0
86426 243 709 0 1 0
86426 243 1451 0 0 0
86426 243 1827 0 NA 1
86426 243 2179 0 NA 1
86875 244 0 6 NA 0
86875 244 362 6 NA 0
86875 244 712 5 NA 0
86885 245 0 8 0 0
86885 245 765 4 5 0
86885 245 822 4 5 0
86885 245 1116 4 4 0
86885 245 1490 4 NA 1
86885 245 1848 3 NA 1
86885 245 2200 2 NA 1
86918 246 0 3 3 0
86918 246 349 3 NA 1
86918 246 1549 0 NA 1
87453 247 0 6 7 0
87453 247 606 4 NA 0
87453 247 1339 4 NA 0
87453 247 1423 3 NA 0
87453 247 1471 3 NA 0
87479 248 0 4 0 0
87479 248 351 4 NA 0
87517 249 0 3 0 0
87517 249 632 3 NA 0
88415 250 0 3 3 0
88415 250 711 1 NA 0
88415 250 1082 0 NA 0
88507 251 0 6 7 0
88507 251 962 3 NA 0
88507 251 1334 3 NA 0
88652 252 0 9 8 0
88652 252 781 3 NA 0
88652 252 1116 1 NA 0
88652 252 1952 1 NA 1
89282 253 0 6 8 0
89282 253 94 5 7 0
89282 253 363 4 6 0
89282 253 713 5 5 0
89282 253 1189 4 NA 1
89282 253 1469 3 NA 1
89282 253 1819 3 NA 1
89282 253 1935 3 NA 1
89282 253 2197 4 NA 1
90599 254 0 9 9 0
90599 254 351 7 9 0
90599 254 352 7 7 0
90599 254 382 7 7 0
90599 254 701 2 2 0
90599 254 1105 2 NA 1
90599 254 1434 1 NA 1
90697 255 0 8 8 0
90697 255 121 7 8 0
90697 255 406 7 NA 1
91036 256 0 5 NA 0
91036 256 371 4 NA 0
91036 256 1939 2 NA 1
91426 257 0 6 NA 1
91426 257 379 4 NA 1
92210 258 0 7 NA 0
92210 258 425 3 NA 0
92210 258 837 3 NA 0
92299 259 0 4 4 0
92299 259 379 3 3 0
92299 259 801 2 2 0
92299 259 1112 2 3 0
92299 259 1463 0 1 0
93678 260 0 8 9 0
93678 260 918 3 NA 0
93706 261 0 5 5 0
93706 261 664 4 NA 0
93706 261 708 4 NA 0
95733 262 0 6 NA 0
95733 262 362 6 NA 0
95733 262 1191 4 NA 1
96261 263 0 5 9 0
96261 263 308 4 4 0
96261 263 1418 2 NA 0
96353 264 0 4 NA 0
96353 264 482 4 NA 0
96353 264 816 3 NA 0
96382 265 0 5 5 0
96382 265 351 3 3 0
96382 265 756 3 NA 1
96382 265 1085 2 NA 1
96382 265 1435 0 NA 1
96382 265 1592 0 NA 1
96382 265 1818 1 NA 1
96419 266 0 2 NA 1
96419 266 349 1 NA 1
96B79 267 0 4 4 0
96B79 267 1242 2 NA 0
98152 268 0 7 7 0
98152 268 742 4 4 0
98195 269 0 6 NA 1
98195 269 349 2 NA 1
98521 270 0 3 NA 1
98521 270 345 2 NA 1
99121 271 0 5 NA 0
99121 271 370 1 NA 0
99121 271 869 2 NA 0
99842 272 0 8 10 0
99842 272 537 6 NA 0
A2B2C 273 0 4 5 0
A2B2C 273 159 4 4 0
A2B2C 273 368 2 3 0
A2B2C 273 3081 0 NA 1
A3039 274 0 4 7 0
A3039 274 1090 2 NA 0
A543D 275 0 8 9 0
A543D 275 444 4 NA 0
A543D 275 752 4 NA 0
A6234 276 0 6 8 0
A6234 276 356 4 5 0
A6234 276 1113 2 4 0
A6234 276 1242 2 4 0
A6234 276 1551 2 5 0
A6234 276 1847 3 4 0
A6234 276 2221 3 NA 1
A712D 277 0 6 5 0
A712D 277 312 3 3 0
B0712 278 0 7 8 0
B0712 278 1122 2 NA 0
B0712 278 1563 3 NA 0
B0712 278 1858 3 NA 0
B0F3B 279 0 5 7 0
B1311 280 0 4 2 0
B1311 280 331 2 1 0
B1311 280 1283 0 0 0
B1311 280 1660 0 0 0
B6069 281 0 9 9 0
B6069 281 661 2 3 0
C0102 282 0 4 6 0
C0102 282 323 5 5 0
C0102 282 676 4 6 0
C0102 282 1463 4 NA 0
C0D60 283 0 5 1 0
C0D60 283 5 5 5 0
C0D60 283 737 3 3 0
C0D60 283 866 2 3 0
C0D60 283 1087 2 2 0
C0D60 283 1478 2 2 0
C3530 284 0 5 6 0
C3530 284 671 4 4 0
C667D 285 0 7 7 0
C667D 285 163 6 7 0
C667D 285 220 7 7 0
C667D 285 369 6 7 0
C667D 285 757 7 8 0
C667D 285 1118 7 NA 0
D2B53 286 0 10 6 0
D2B53 286 987 1 4 0
D353A 287 0 9 9 0
D353A 287 347 6 6 0
D353A 287 942 2 4 0
D353A 287 1309 2 0 0
D353A 287 1663 1 2 0
D6642 288 0 4 3 0
D6642 288 343 3 2 0
D6642 288 386 3 2 0
D6642 288 747 0 0 0
D7A14 289 0 3 0 0
D7A14 289 1461 2 NA 1
E022A 290 0 4 NA 0
E022A 290 356 4 NA 0
E022A 290 722 3 NA 0
E0472 291 0 7 8 0
E0472 291 951 3 5 0
E0472 291 1330 3 4 0
E0472 291 1722 1 3 0
E0472 291 2065 2 NA 0
E0472 291 2414 3 NA 0
E1154 292 0 6 7 0
E1154 292 252 5 6 0
E1154 292 629 4 5 0
E1B15 293 0 2 4 0
E1B15 293 737 1 2 0
E1B15 293 1478 0 NA 0
E1B15 293 1851 0 NA 0
E1D7D 294 0 9 10 0
E1D7D 294 361 5 6 0
E1D7D 294 1014 2 4 0
E2204 295 0 5 7 0
E2204 295 321 3 NA 0
E2204 295 501 4 NA 0
E2204 295 859 4 NA 0
E6D47 296 0 5 NA 1
E7E64 297 0 8 8 0
E7E64 297 985 4 5 0
E7E64 297 1485 3 5 0
F1071 298 0 6 4 0
F1071 298 147 5 5 0
F1071 298 304 1 3 0
F1071 298 534 2 3 0
F1071 298 711 2 3 0
F1555 299 0 7 7 0
F1555 299 321 0 4 0
F5F25 300 0 7 7 0
F5F25 300 257 6 8 0
F5F25 300 422 6 7 0
F5F25 300 626 5 7 0
F5F25 300 1407 3 NA 0
03596 301 0 0 1 0
03596 301 347 0 1 0
03596 301 694 0 0 0
03596 301 1086 0 0 0
03596 301 2187 0 NA 1
13726 302 0 0 2 0
13726 302 786 0 2 0
13726 302 1486 0 1 0
13726 302 1933 0 NA 1
2184D 303 0 2 5 0
2184D 303 1307 0 3 0
41B20 304 0 1 2 0
41B20 304 343 0 1 0
41B20 304 683 0 3 0
41B20 304 1028 0 0 0
41B20 304 1813 0 NA 0
B1757 305 0 4 4 0
B1757 305 724 0 2 0
B1757 305 1101 0 NA 0
B1757 305 2659 0 NA 1
B1757 305 2925 0 NA 1
C6F06 306 0 3 4 0
C6F06 306 482 0 1 0
C6F06 306 1112 0 NA 0
C6F06 306 1825 0 0 0
D0701 307 0 0 1 0
D0701 307 917 3 3 0
D0701 307 1988 0 4 0
D0701 307 2117 0 3 0
D0701 307 2717 0 1 0
D0701 307 3228 0 NA 1

1.1 Observed data

N individuals = 307
N samples = 1025

1.1.1 Pomona

ggplot() +
       geom_line(data = observed.data.for.fitting.incl.neg,aes(x = time,y = titer.pomona,col = id,group = id),alpha = 0.4,size = 1,color="#9E0142") +
       scale_y_continuous(breaks = seq(0,15,2)) +
       theme_classic(base_family = "Avenir Next") +
       theme(plot.title  =  element_text(size  = 24),
             text = element_text(size = 11),
             axis.ticks = element_blank(),
             axis.text = element_blank(),
             axis.title  =  element_text(size=30,margin  =  ggplot2::margin(r = 10)),
             legend.position  =  "none")+
       xlab("Time since first positive") +
       ylab("Ab level (log2)")

ggplot() +
       geom_line(data = observed.data.for.fitting.incl.neg[1:400,],aes(x = time,y = titer.pomona,col = id,group = id),alpha = 0.4,size = 1,color="#9E0142") +
       scale_y_continuous(breaks = seq(0,15,2)) +
       theme_classic(base_family = "Avenir Next") +
       theme(plot.title  =  element_text(size  = 24),
             text = element_text(size = 11),
             axis.ticks = element_blank(),
             axis.text = element_blank(),
             axis.title  =  element_text(size=30,margin  =  ggplot2::margin(r = 10)),
             legend.position  =  "none")+
       xlab("Time since first positive") +
       ylab("Ab level (log2)")

ggplot() +
       geom_line(data = observed.data.for.fitting,aes(x = time,y = titer.pomona,col = id,group = id),alpha = 0.4,size = 0.6) +
       geom_point(data = observed.data.for.fitting,aes(x = time,y = titer.pomona,col = id,group = id),size=1.2,alpha = 0.9) +
       scale_color_gradientn(colours  =  brewer.pal(4,"Spectral")) +
       # scale_y_continuous(limits = c(2,10),breaks = 2:10) +
       scale_y_continuous(breaks = seq(0,15,2)) +
       theme_light(base_family = "Avenir Next") +
       theme(plot.title  =  element_text(size  = 24),
             text = element_text(size = 11),
             axis.text = element_text(size = 10),
             axis.title.y  =  element_text(margin  =  ggplot2::margin(r = 10)),
             legend.position  =  "none")+
       xlab("Time since first positive sample") +
       ylab("Antibody level (log2) Pomona")

1.1.2 Autumnalis

ggplot() +
       geom_line(data = observed.data.for.fitting.incl.neg,aes(x = time,y = titer.aut,col = id,group = id),alpha = 0.4,size = 1,color="#9E0142") +
       scale_y_continuous(breaks = seq(0,15,2)) +
       theme_classic(base_family = "Avenir Next") +
       theme(plot.title  =  element_text(size  = 24),
             text = element_text(size = 11),
             axis.ticks = element_blank(),
             axis.text = element_blank(),
             axis.title  =  element_text(size=30,margin  =  ggplot2::margin(r = 10)),
             legend.position  =  "none")+
       xlab("Time since first positive") +
       ylab("Ab level (log2)")

ggplot() +
       geom_line(data = observed.data.for.fitting,aes(x = time,y = titer.aut,col = id,group = id),alpha = 0.4,size = 0.6) +
       geom_point(data = observed.data.for.fitting,aes(x = time,y = titer.aut,col = id,group = id),size=1.2,alpha = 0.9) +
       scale_color_gradientn(colours  =  brewer.pal(4,"Spectral")) +
       scale_y_continuous(breaks = seq(0,15,2)) +
       theme_light(base_family = "Avenir Next") +
       theme(plot.title  =  element_text(size  = 24),
             text = element_text(size = 11),
             axis.text = element_text(size = 10),
             axis.title.y  =  element_text(margin  =  ggplot2::margin(r = 10)),
             legend.position  =  "none")+
       xlab("Time since first positive sample") +
       ylab("Antibody level (log2) Autumnalis")

1.1.3 Combined

plot.temp.dat = gather(observed.data.for.fitting,serovar,titer,c("titer.pomona","titer.aut"))
plot.temp.dat$id = paste0(plot.temp.dat$serovar,plot.temp.dat$id)

ggplot() +
       geom_line(data = plot.temp.dat,aes(x = time,y = titer,col = serovar,group = id),alpha = 0.3,size = 0.7) +
       #geom_point(data = observed.data.for.fitting.incl.neg,aes(x = time,y = titer.pomona,col = id,group = id),size=1.2,alpha = 0.9,col="grey") +
       #geom_point(data = observed.data.for.fitting.incl.neg,aes(x = time,y = titer.aut,col = id,group = id),size=1.2,alpha = 0.9,col="darkred") +
       #scale_color_gradientn(colours  =  brewer.pal(4,"Spectral")) +
       scale_color_manual(values = brewer.pal(11,"Spectral")[c(2,10)],labels = c("Autumnalis","Pomona"),name="Serovar") +
       scale_y_continuous(breaks = seq(0,15,2)) +
       theme_light(base_family = "Avenir Next") +
       theme(plot.title  =  element_text(size  = 24),
             text = element_text(size = 11),
             axis.text = element_text(size = 10),
             axis.title.y  =  element_text(margin  =  ggplot2::margin(r = 10)),
             legend.position  =  c(0.75,0.75),
             legend.background = element_rect(colour = "transparent", fill = "transparent"))+
       xlab("Time since first positive sample") +
       ylab("Antibody level (log)")

Autumnalis levels increased by 0.2 for plotting purposes.

plot.temp.dat$titer[which(plot.temp.dat$serovar=="titer.aut")] = plot.temp.dat$titer[which(plot.temp.dat$serovar=="titer.aut")] + 0.2

ggplot() +
       #geom_line(data = plot.temp.dat,aes(x = time,y = titer,col = serovar,group = id),alpha = 0.3,size = 0.7) +
       geom_point(data = plot.temp.dat,aes(x = time,y = titer,col = serovar,group = id),alpha = 0.4,size = 0.7) +
       #geom_point(data = observed.data.for.fitting.incl.neg,aes(x = time,y = titer.aut,col = id,group = id),size=1.2,alpha = 0.9,col="darkred") +
       #scale_color_gradientn(colours  =  brewer.pal(4,"Spectral")) +
       scale_color_manual(values = brewer.pal(5,"Spectral")[c(1,5)],labels = c("Autumnalis","Pomona"),name="Serovar") +
       scale_y_continuous(breaks = seq(0,15,2)) +
       theme_light(base_family = "Avenir Next") +
       theme(plot.title  =  element_text(size  = 24),
             text = element_text(size = 11),
             axis.text = element_text(size = 10),
             axis.title.y  =  element_text(margin  =  ggplot2::margin(r = 10)),
             legend.position  =  c(0.75,0.75),
             legend.background = element_rect(colour = "transparent", fill = "transparent"))+
       xlab("Time since first positive sample") +
       ylab("Antibody level (log)")

2 Fit model parameters

2.1 Double exponential


# set prior parameters

peak.titer.mean.prior.mean.pomona = 7
peak.titer.mean.prior.sd.pomona = 2

peak.titer.sd.prior.pomona = 2.5  # for multivariate normal prior

peak.titer.mean.prior.mean.aut = 7.5
peak.titer.mean.prior.sd.aut = 2

peak.titer.sd.prior.aut = 3  # for multivariate normal prior


decay.rate.mean.prior.shape.pomona = 1
decay.rate.mean.prior.rate.pomona = 20

decay.rate.sd.prior.shape.pomona = 2   # 7
decay.rate.sd.prior.rate.pomona = 3   # 20000

decay.rate.mean.prior.shape.aut = 1
decay.rate.mean.prior.rate.aut = 20

decay.rate.sd.prior.shape.aut = 2  # 7
decay.rate.sd.prior.rate.aut = 3   # 20000

# parameters:
# 1 = error.sd, individual (log) normal error
# 2 : 1+N.inds = time of infection, individual, as time before first positive     
# 2+N.inds : 2+N.inds+N.inds = peak titer individual

N.inds = length(unique(observed.data.for.fitting$id))

uid = unique(observed.data.for.fitting$id)

# burn.in = 40000
# iterations = 50000  # = after burn in


burn.in = 10000
iterations = 50000  # = after burn in



run.mcmc=F


if(run.mcmc==T){
       
       model1.mod = function(){
              
              # priors
              for(j in 1:length(neg.int)){
                     
                     
                     # multivariate distribution for pom and aut peak titers
                     mu_pom_aut[j,1:2] ~ dmnorm(mu_pom_aut_mean,mu_pom_aut_precision)
                     
                     # extract mean peak levels for pom and aut
                     mu_pomona[j] <- mu_pom_aut[j,1]
                     mu_aut[j] <- mu_pom_aut[j,2]
                     
                     # decay rates pom and aut
                     decay_pomona[j] ~ dnorm(decay_overall_pomona,decay_tau_overall_pomona)
                     decay_aut[j] ~ dnorm(decay_overall_aut,decay_tau_overall_aut)
                     
                     # time between peak level and first positive, shared between pom and aut
                     theta[j] ~ dunif(neg.int[j],0)
              }
              
              sigma_pomona ~ dunif(0,50)
              tau_pomona <- 1/(sigma_pomona*sigma_pomona)
              
              sigma_aut ~ dunif(0,50)
              tau_aut <- 1/(sigma_aut*sigma_aut)
              
              lab_effect ~ dnorm(0,0.01)
              
              #hyper priors
              
              # multivariate pom aut mean and sd
              mu_pom_aut_mean ~ dmnorm(mu_means,tau_means)
              mu_pom_aut_precision ~ dwish(omega,wishdf)
              
              # extract individual means peak level
              mu_overall_pomona <- mu_pom_aut_mean[1]
              mu_overall_aut <- mu_pom_aut_mean[2]
              
              # multivariate precision matrix
              inverse_mu_pom_aut_precision <- inverse(mu_pom_aut_precision)
              sigma_overall_pomona <- inverse_mu_pom_aut_precision[1,1]^(1/2)
              sigma_overall_aut <- inverse_mu_pom_aut_precision[2,2]^(1/2)
              
              # decay rates            
              
              decay_overall_pomona ~ dgamma(decay.rate.mean.prior.shape.pomona,decay.rate.mean.prior.rate.pomona)
              decay_sigma_overall_pomona ~ dgamma(decay.rate.sd.prior.shape.pomona,decay.rate.sd.prior.rate.pomona)
              decay_tau_overall_pomona <- 1/(decay_sigma_overall_pomona*decay_sigma_overall_pomona)
              
              decay_overall_aut ~ dgamma(decay.rate.mean.prior.shape.aut,decay.rate.mean.prior.rate.aut)
              decay_sigma_overall_aut ~ dgamma(decay.rate.sd.prior.shape.aut,decay.rate.sd.prior.rate.aut)
              decay_tau_overall_aut <- 1/(decay_sigma_overall_aut*decay_sigma_overall_aut)
              
              
              # likelihood
              for(i in 1:length(time)){
                     # predicted level pomona
                     titer_pred_pomona[i] <- lab_effect*lab[i] + mu_pomona[id[i]]*exp(-decay_pomona[id[i]]*(time[i]-theta[id[i]]))
                     
                     true_titer_pomona[i] ~ dnorm(titer_pred_pomona[i],tau_pomona)
                     # interval censoring
                     titer_pomona[i] ~ dinterval(true_titer_pomona[i], c(1,2,3,4,5,6,7,8,9,10,11,12,13))
                     
                     # predicted level aut
                     titer_pred_aut[i] <- lab_effect*lab[i] + mu_aut[id[i]]*exp(-decay_aut[id[i]]*(time[i]-theta[id[i]]))
                     
                     true_titer_aut[i] ~ dnorm(titer_pred_aut[i],tau_aut)
                     # interval censoring
                     titer_aut[i] ~ dinterval(true_titer_aut[i], c(1,2,3,4,5,6,7,8,9,10,11,12,13))
                     
                     # store sum loglikelihood as parameter for WAIC calculation
                     LogLik[i] = log(dnorm(titer_pomona[i],true_titer_pomona[i],tau_pomona)) + log(dnorm(titer_aut[i],true_titer_aut[i],tau_aut))
              }
       }
       
       
       model.file = "jags_model.txt"
       write.model(model1.mod,model.file)
       
       
       model.jags = jags.model(model.file,
                               data=list('titer_pomona'=observed.data.for.fitting$titer.pomona,
                                         'titer_aut'=observed.data.for.fitting$titer.aut,
                                         'time'=observed.data.for.fitting$time,
                                         'id'=observed.data.for.fitting$id,
                                         'neg.int'=neg.intervals,
                                         'lab'=observed.data.for.fitting$lab,
                                         'mu_means' = c(peak.titer.mean.prior.mean.pomona,peak.titer.mean.prior.mean.aut),
                                         'tau_means' = diag(c((1/(peak.titer.mean.prior.sd.pomona^2)),(1/(peak.titer.mean.prior.sd.aut^2)))),
                                         'omega' = diag(c((1/(peak.titer.sd.prior.pomona^2)),(1/(peak.titer.sd.prior.aut^2)))),
                                         'wishdf' = 2,
                                         'decay.rate.mean.prior.shape.pomona' = decay.rate.mean.prior.shape.pomona,
                                         'decay.rate.mean.prior.rate.pomona' = decay.rate.mean.prior.rate.pomona,
                                         "decay.rate.sd.prior.shape.pomona" = decay.rate.sd.prior.shape.pomona,
                                         "decay.rate.sd.prior.rate.pomona" = decay.rate.sd.prior.rate.pomona,
                                         'decay.rate.mean.prior.shape.aut' = decay.rate.mean.prior.shape.aut,
                                         'decay.rate.mean.prior.rate.aut' = decay.rate.mean.prior.rate.aut,
                                         "decay.rate.sd.prior.shape.aut" = decay.rate.sd.prior.shape.aut,
                                         "decay.rate.sd.prior.rate.aut" = decay.rate.sd.prior.rate.aut
                                         
                               ),
                               #inits=list('beta0'=-1),
                               n.chains=6,
                               n.adapt = 1000)
       
       
       # burn in
       update(model.jags, n.iter = burn.in, by = 1)
       
       
       
       # draw samples
       post = coda.samples(model.jags, c("mu_overall_pomona","sigma_overall_pomona","decay_overall_pomona","decay_sigma_overall_pomona","decay_pomona","mu_overall_aut","sigma_overall_aut","decay_overall_aut","decay_sigma_overall_aut","decay_aut","theta","mu_pomona","mu_aut","LogLik","mu_pom_aut_mean","mu_pom_aut_precision","lab_effect"), n.iter = iterations, thin = 1)
       
       chains.burn.df = mcmclist.to.dataframe(post)
       
       rm(post)
       
       
       # save output, needs existing MCMC_runs folder in working directory
       filename = "MCMC_antibody_decay_double_exponential.RDS"
       print(filename)
       saveRDS(chains.burn.df,filename)
       
       
       
} else {
       # load previous output if not re-running model, speeds up markdown knitting
       chains.burn.df=readRDS("MCMC_antibody_decay_double_exponential.RDS")
}


chains.burn.df.original = chains.burn.df
# only keep last 20000 iterations for each chain
chains.burn.df = chains.burn.df  %>% 
       filter(iteration > (max(iteration)-20000))

parnames = c(paste0("LogLik",1:nrow(observed.data.for.fitting)),paste0("decay.rate.aut.",uid),"decay.rate.overall.aut","decay.rate.overall.pomona",paste0("decay.rate.pomona.",uid),"decay.rate.sd.overall.aut","decay.rate.sd.overall.pomona","lab.effect",paste0("peak.titer.aut.",uid),"peak.titer.overall.aut","peak.titer.overall.pomona",paste0("mu_pom_aut_mean_pom_",1:2),paste0("mu_pom_aut_precision_",1:4),paste0("peak.titer.pomona.",uid),"peak.titer.sd.overall.aut","peak.titer.sd.overall.pomona",paste0("toi.",uid),"chain","iteration")
       
colnames(chains.burn.df) = parnames
# gelman rubin diagnostics, uncomment to run   

# gel.rub.apply.fun = function(x) gelman.fun(x = x,chains=chains.burn.df$chain,iterations = chains.burn.df$iteration)
# R.vals = gel.rub.apply.fun(chains.burn.df[,1])
# # 
# gel.rub = data.frame(variable = colnames(chains.burn.df)[-which(colnames(chains.burn.df) %in% c("chain","iteration"))],
#                      R = apply(chains.burn.df[-which(colnames(chains.burn.df) %in% c("chain","iteration"))],2,gel.rub.apply.fun))
# 
# get posterior estimates of multivariate mean and precision matrix

mnorm_means = c(mean(chains.burn.df$mu_pom_aut_mean_pom_1),mean(chains.burn.df$mu_pom_aut_mean_pom_2))

precision_matrix = matrix(data = c(
       median(chains.burn.df$mu_pom_aut_precision_1),
       median(chains.burn.df$mu_pom_aut_precision_2),
       median(chains.burn.df$mu_pom_aut_precision_3),
       median(chains.burn.df$mu_pom_aut_precision_4)),ncol=2)

2.2 Adjust time since first positive sample to estimated time since peak level

observed.data.for.fitting$time.since.peak = NA

for(i in 1:length(uid)){
       idx.current = which(observed.data.for.fitting$id == uid[i])
       peak.titer.time = round(max.dens.fun(x = chains.burn.df[,paste0("toi.",i)],neg.interval = neg.intervals[i]))
       observed.data.for.fitting$time.since.peak[idx.current] = observed.data.for.fitting$time[idx.current] - peak.titer.time
}

2.3 Single exponential

if(run.mcmc==T){
       
       
       # set prior parameters
       
       peak.titer.mean.prior.mean.pomona = 7.5
       peak.titer.mean.prior.sd.pomona = 0.7
       
       peak.titer.sd.prior.pomona = 3  # for multivariate normal prior
       
       peak.titer.mean.prior.mean.aut = 7
       peak.titer.mean.prior.sd.aut = 0.7
       
       peak.titer.sd.prior.aut = 3  # for multivariate normal prior
       
       
       decay.rate.mean.prior.mean.pomona = 0.0009
       decay.rate.mean.prior.sd.pomona = 0.0001
       decay.rate.sd.prior.shape.pomona = 7
       decay.rate.sd.prior.rate.pomona = 20000
       
       decay.rate.mean.prior.mean.aut = 0.0009
       decay.rate.mean.prior.sd.aut = 0.0001
       decay.rate.sd.prior.shape.aut = 7
       decay.rate.sd.prior.rate.aut = 20000
       
       # parameters:
       # 1 = error.sd, individual (log) normal error
       # 2 : 1+N.inds = time of infection, individual, as time before first positive     
       # 2+N.inds : 2+N.inds+N.inds = peak titer individual
       
       N.inds = length(unique(observed.data.for.fitting$id))
       
       uid = unique(observed.data.for.fitting$id)
       
       burn.in = 40000
       iterations = 50000  # = after burn in
       
       
       model1.mod = function(){
              
              # priors
              for(j in 1:length(neg.int)){
                     
                     
                     # multivariate distribution for pom and aut peak titers
                     mu_pom_aut[j,1:2] ~ dmnorm(mu_pom_aut_mean,mu_pom_aut_precision)
                     
                     # extract mean peak levels for pom and aut
                     mu_pomona[j] <- mu_pom_aut[j,1]
                     mu_aut[j] <- mu_pom_aut[j,2]
                     
                     # decay rates pom and aut
                     decay_pomona[j] ~ dnorm(decay_overall_pomona,decay_tau_overall_pomona)
                     decay_aut[j] ~ dnorm(decay_overall_aut,decay_tau_overall_aut)
                     
                     # time between peak level and first positive, shared between pom and aut
                     theta[j] ~ dunif(neg.int[j],0)
              }
              
              sigma_pomona ~ dunif(0,50)
              tau_pomona <- 1/(sigma_pomona*sigma_pomona)
              
              sigma_aut ~ dunif(0,50)
              tau_aut <- 1/(sigma_aut*sigma_aut)
              
              lab_effect ~ dnorm(0,0.01)
              
              #hyper priors
              
              # multivariate pom aut mean and sd
              mu_pom_aut_mean ~ dmnorm(mu_means,tau_means)
              mu_pom_aut_precision ~ dwish(omega,wishdf)
              
              # extract individual means peak level
              mu_overall_pomona <- mu_pom_aut_mean[1]
              mu_overall_aut <- mu_pom_aut_mean[2]
              
              # multivariate precision matrix
              inverse_mu_pom_aut_precision <- inverse(mu_pom_aut_precision)
              sigma_overall_pomona <- inverse_mu_pom_aut_precision[1,1]^(1/2)
              sigma_overall_aut <- inverse_mu_pom_aut_precision[2,2]^(1/2)
              
              # decay rates            
              decay_overall_pomona ~ dnorm(decay.rate.mean.prior.mean.pomona,1/(decay.rate.mean.prior.sd.pomona*decay.rate.mean.prior.sd.pomona))
              decay_sigma_overall_pomona ~ dgamma(decay.rate.sd.prior.shape.pomona,decay.rate.sd.prior.rate.pomona)
              decay_tau_overall_pomona <- 1/(decay_sigma_overall_pomona*decay_sigma_overall_pomona)
              
              decay_overall_aut ~ dnorm(decay.rate.mean.prior.mean.aut,1/(decay.rate.mean.prior.sd.aut*decay.rate.mean.prior.sd.aut))
              decay_sigma_overall_aut ~ dgamma(decay.rate.sd.prior.shape.aut,decay.rate.sd.prior.rate.aut)
              decay_tau_overall_aut <- 1/(decay_sigma_overall_aut*decay_sigma_overall_aut)
              
              
              # likelihood
              for(i in 1:length(time)){
                     # predicted level pomona
                     
                     titer_pred_pomona[i] <- lab_effect*lab[i] +mu_pomona[id[i]] - decay_pomona[id[i]]*(time[i]-theta[id[i]])
                     true_titer_pomona[i] ~ dnorm(titer_pred_pomona[i],tau_pomona)
                     # interval censoring
                     titer_pomona[i] ~ dinterval(true_titer_pomona[i], c(1,2,3,4,5,6,7,8,9,10,11,12,13))
                     
                     # predicted level aut
                     titer_pred_aut[i] <- lab_effect*lab[i] +mu_aut[id[i]] - decay_aut[id[i]]*(time[i]-theta[id[i]])
                     true_titer_aut[i] ~ dnorm(titer_pred_aut[i],tau_aut)
                     # interval censoring
                     titer_aut[i] ~ dinterval(true_titer_aut[i], c(1,2,3,4,5,6,7,8,9,10,11,12,13))
                     
                     # store sum loglikelihood as parameter for WAIC calculation
                     LogLik[i] = log(dnorm(titer_pomona[i],true_titer_pomona[i],tau_pomona)) + log(dnorm(titer_aut[i],true_titer_aut[i],tau_aut))
              }
       }
       
       
       model.file = "jags_model.txt"
       write.model(model1.mod,model.file)
       
       
       model.jags = jags.model(model.file,
                               data=list('titer_pomona'=observed.data.for.fitting$titer.pomona,
                                         'titer_aut'=observed.data.for.fitting$titer.aut,
                                         'time'=observed.data.for.fitting$time,
                                         'id'=observed.data.for.fitting$id,
                                         'lab'=observed.data.for.fitting$lab,
                                         'neg.int'=neg.intervals,
                                         'mu_means' = c(peak.titer.mean.prior.mean.pomona,peak.titer.mean.prior.mean.aut),
                                         'tau_means' = diag(c((1/(peak.titer.mean.prior.sd.pomona^2)),(1/(peak.titer.mean.prior.sd.aut^2)))),
                                         'omega' = diag(c((1/(peak.titer.sd.prior.pomona^2)),(1/(peak.titer.sd.prior.aut^2)))),
                                         'wishdf' = 2,
                                         "decay.rate.mean.prior.mean.pomona" = decay.rate.mean.prior.mean.pomona,
                                         "decay.rate.mean.prior.sd.pomona" = decay.rate.mean.prior.sd.pomona,
                                         "decay.rate.sd.prior.shape.pomona" = decay.rate.sd.prior.shape.pomona,
                                         "decay.rate.sd.prior.rate.pomona" = decay.rate.sd.prior.rate.pomona,
                                         "decay.rate.mean.prior.mean.aut" = decay.rate.mean.prior.mean.aut,
                                         "decay.rate.mean.prior.sd.aut" = decay.rate.mean.prior.sd.aut,
                                         "decay.rate.sd.prior.shape.aut" = decay.rate.sd.prior.shape.aut,
                                         "decay.rate.sd.prior.rate.aut" = decay.rate.sd.prior.rate.aut
                                         
                               ),
                               #inits=list('beta0'=-1),
                               n.chains=6,
                               n.adapt = 2500)
       
       
       # burn in
       update(model.jags, n.iter = burn.in, by = 1)
       
       
       
       # draw samples
       post = coda.samples(model.jags, c("mu_overall_pomona","sigma_overall_pomona","decay_overall_pomona","decay_sigma_overall_pomona","decay_pomona","mu_overall_aut","sigma_overall_aut","decay_overall_aut","decay_sigma_overall_aut","decay_aut","theta","mu_pomona","mu_aut","LogLik","mu_pom_aut_mean","lab_effect"), n.iter = iterations, thin = 10)
       
       chains.burn.df = mcmclist.to.dataframe(post)
       
       # parnames = c(paste0("LogLik",1:nrow(observed.data.for.fitting)),paste0("decay.rate.aut.",uid),"decay.rate.overall.aut","decay.rate.overall.pomona",paste0("decay.rate.pomona.",uid),"decay.rate.sd.overall.aut","decay.rate.sd.overall.pomona",paste0("peak.titer.aut.",uid),"peak.titer.overall.aut","peak.titer.overall.pomona",paste0("mu_pom_aut_mean_pom_",1:2),paste0("mu_pom_aut_precision_",1:4),paste0("peak.titer.pomona.",uid),"peak.titer.sd.overall.aut","peak.titer.sd.overall.pomona",paste0("toi.",uid),"chain","iteration")
       # 
       # colnames(chains.burn.df) = parnames
       
       
       # save output, needs existing MCMC_runs folder in working directory
       filename = "MCMC_antibody_decay_single_exponential.RDS"
       print(filename)
       saveRDS(chains.burn.df,filename)
       
       
       
} else {
       # load previous output if not re-running model, speeds up markdown knitting
       chains.burn.df.1=readRDS("MCMC_antibody_decay_single_exponential.RDS")
}

2.4 Power

if(run.mcmc==T){
       
       
       # set prior parameters
       
       peak.titer.mean.prior.mean.pomona = 7.5
       peak.titer.mean.prior.sd.pomona = 0.7
       
       peak.titer.sd.prior.pomona = 3  # for multivariate normal prior
       
       peak.titer.mean.prior.mean.aut = 7
       peak.titer.mean.prior.sd.aut = 0.7
       
       peak.titer.sd.prior.aut = 3  # for multivariate normal prior
       
       
       shape.sd.prior = 3
       scale.sd.prior = 0.003
       
       shape.mean.sd.prior = 1
       scale.mean.sd.prior = 0.0005
       
       
       log.mean.shape.prior.mean = log(0.5)
       log.mean.shape.prior.sd = 0.1
       log.mean.scale.prior.mean = log(0.0005)
       log.mean.scale.prior.sd = 1
       
       log.sd.shape.prior.shape = 2
       log.sd.shape.prior.rate = 0.75
       log.sd.scale.prior.shape = 2
       log.sd.scale.prior.rate = 0.5
       
       
       
       
       # parameters:
       # 1 = error.sd, individual (log) normal error
       # 2 : 1+N.inds = time of infection, individual, as time before first positive     
       # 2+N.inds : 2+N.inds+N.inds = peak titer individual
       
       N.inds = length(unique(observed.data.for.fitting$id))
       
       uid = unique(observed.data.for.fitting$id)
       
       burn.in = 40000
       iterations = 50000  # = after burn in
       
       
       
       model1.mod = function(){
              
              # priors
              for(j in 1:length(neg.int)){
                     
                     
                     # multivariate distribution for pom and aut peak titers
                     mu_pom_aut[j,1:2] ~ dmnorm(mu_pom_aut_mean,mu_pom_aut_precision)
                     
                     # extract mean peak levels for pom and aut
                     mu_pomona[j] <- mu_pom_aut[j,1]
                     exp.mu_pomona[j] <- 100*2^(mu_pomona[j]-1)
                     mu_aut[j] <- mu_pom_aut[j,2]
                     exp.mu_aut[j] <- 100*2^(mu_aut[j]-1)
                     
                     # decay parameters pom and aut
                     log_shape_scale_pomona[j,1:2] ~ dmnorm(shape_scale_pomona_mean,shape_scale_pomona_precision)
                     log.shape_pomona[j] <- log_shape_scale_pomona[j,1]
                     log.scale_pomona[j] <- log_shape_scale_pomona[j,2]
                     
                     shape_pomona[j] <- exp(log.shape_pomona[j]) + 1
                     scale_pomona[j] <- exp(log.scale_pomona[j])
                     
                     log_shape_scale_aut[j,1:2] ~ dmnorm(shape_scale_aut_mean,shape_scale_aut_precision)
                     log.shape_aut[j] <- log_shape_scale_aut[j,1]
                     log.scale_aut[j] <- log_shape_scale_aut[j,2]
                     
                     shape_aut[j] <- exp(log.shape_aut[j]) + 1
                     scale_aut[j] <- exp(log.scale_aut[j])
                     
                     
                     # time between peak level and first positive, shared between pom and aut
                     theta[j] ~ dunif(neg.int[j],0)
              }
              
              
              
              lab_effect ~ dnorm(0,0.01)
              
              sigma_pomona ~ dunif(0,50)
              tau_pomona <- 1/(sigma_pomona*sigma_pomona)
              
              sigma_aut ~ dunif(0,50)
              tau_aut <- 1/(sigma_aut*sigma_aut)
              
              
              #hyper priors
              
              # multivariate pom aut mean and sd
              mu_pom_aut_mean ~ dmnorm(mu_means,tau_means)
              mu_pom_aut_precision ~ dwish(omega,wishdf)
              
              # extract individual means peak level
              mu_overall_pomona <- mu_pom_aut_mean[1]
              mu_overall_aut <- mu_pom_aut_mean[2]
              
              # multivariate precision matrix
              inverse_mu_pom_aut_precision <- inverse(mu_pom_aut_precision)
              sigma_overall_pomona <- inverse_mu_pom_aut_precision[1,1]^(1/2)
              sigma_overall_aut <- inverse_mu_pom_aut_precision[2,2]^(1/2)
              
              
              
              # multivariate decay rate parameters pomona
              shape_scale_pomona_mean ~ dmnorm(mean_shape_scale_pomona_mean,mean_shape_scale_pomona_tau)
              shape_scale_pomona_precision ~ dwish(omega_shape_scale_pomona,wishdf_shape_scale_pomona)
              
              # extract individual means decay rate parameters pomona
              mu_overall_shape_pomona <- exp(shape_scale_pomona_mean[1])+1
              mu_overall_scale_pomona <- exp(shape_scale_pomona_mean[2])
              
              # multivariate precision matrix pomona
              inverse_mu_shape_scale_pomona_precision <- inverse(shape_scale_pomona_precision)
              sigma_overall_shape_pomona <- inverse_mu_shape_scale_pomona_precision[1,1]^(1/2)
              sigma_overall_scale_pomona <- inverse_mu_shape_scale_pomona_precision[2,2]^(1/2)
              
              
              
              # multivariate decay rate parameters aut
              shape_scale_aut_mean ~ dmnorm(mean_shape_scale_aut_mean,mean_shape_scale_aut_tau)
              shape_scale_aut_precision ~ dwish(omega_shape_scale_aut,wishdf_shape_scale_aut)
              
              # extract individual means decay rate parameters aut
              mu_overall_shape_aut <- exp(shape_scale_aut_mean[1])+1
              mu_overall_scale_aut <- exp(shape_scale_aut_mean[2])
              
              # multivariate precision matrix aut
              inverse_mu_shape_scale_aut_precision <- inverse(shape_scale_aut_precision)
              sigma_overall_shape_aut <- inverse_mu_shape_scale_aut_precision[1,1]^(1/2)
              sigma_overall_scale_aut <- inverse_mu_shape_scale_aut_precision[2,2]^(1/2)
              
              
              
              
              # likelihood
              for(i in 1:length(time)){
                     # predicted level pomona
                     titer_pred_pomona[i] <-  exp.mu_pomona[id[i]]*(1+(shape_pomona[id[i]]-1)*(exp.mu_pomona[id[i]]^(shape_pomona[id[i]]-1))*scale_pomona[id[i]]*(time[i]-theta[id[i]]))^(-1/(shape_pomona[id[i]]-1))
                     log2_titer_pred_pomona[i] <- 1+(log(titer_pred_pomona[i]/100)/log(2))
                     lab_effect_log2_titer_pred_pomona[i] <- lab_effect*lab[i] + log2_titer_pred_pomona[i]
                     true_titer_pomona[i] ~ dnorm(lab_effect_log2_titer_pred_pomona[i],tau_pomona)
                     # interval censoring
                     titer_pomona[i] ~ dinterval(true_titer_pomona[i], c(1,2,3,4,5,6,7,8,9,10,11,12,13))
                     
                     
                     titer_pred_aut[i] <-  exp.mu_aut[id[i]]*(1+(shape_aut[id[i]]-1)*(exp.mu_aut[id[i]]^(shape_aut[id[i]]-1))*scale_aut[id[i]]*(time[i]-theta[id[i]]))^(-1/(shape_aut[id[i]]-1))
                     log2_titer_pred_aut[i] <- 1+(log(titer_pred_aut[i]/100)/log(2))
                     lab_effect_log2_titer_pred_aut[i] <- lab_effect*lab[i] + log2_titer_pred_aut[i]
                     true_titer_aut[i] ~ dnorm(lab_effect_log2_titer_pred_aut[i],tau_aut)
                     # interval censoring
                     titer_aut[i] ~ dinterval(true_titer_aut[i], c(1,2,3,4,5,6,7,8,9,10,11,12,13))
                     
                     
                     # store sum loglikelihood as parameter for WAIC calculation
                     LogLik[i] = log(dnorm(titer_pomona[i],true_titer_pomona[i],tau_pomona)) + log(dnorm(titer_aut[i],true_titer_aut[i],tau_aut))
              }
       }
       
       
       
       model2.uncorrelated_shape_scale.mod = function(){
              
              # priors
              for(j in 1:length(neg.int)){
                     
                     
                     # multivariate distribution for pom and aut peak titers
                     mu_pom_aut[j,1:2] ~ dmnorm(mu_pom_aut_mean,mu_pom_aut_precision)
                     
                     # extract mean peak levels for pom and aut
                     mu_pomona[j] <- mu_pom_aut[j,1]
                     exp.mu_pomona[j] <- 100*2^(mu_pomona[j]-1)
                     mu_aut[j] <- mu_pom_aut[j,2]
                     exp.mu_aut[j] <- 100*2^(mu_aut[j]-1)
                     
                     # decay parameters pom and aut
                     log.shape_pomona[j] ~ dnorm(log_shape_pomona_overall_mean,log_shape_pomona_overall_tau)
                     log.scale_pomona[j] ~ dnorm(log_scale_pomona_overall_mean,log_scale_pomona_overall_tau)
                     
                     shape_pomona[j] <- exp(log.shape_pomona[j]) + 1
                     scale_pomona[j] <- exp(log.scale_pomona[j])
                     
                     log.shape_aut[j] ~ dnorm(log_shape_aut_overall_mean,log_shape_aut_overall_tau)
                     log.scale_aut[j] ~ dnorm(log_scale_aut_overall_mean,log_scale_aut_overall_tau)
                     
                     shape_aut[j] <- exp(log.shape_aut[j]) + 1
                     scale_aut[j] <- exp(log.scale_aut[j])
                     
                     
                     # time between peak level and first positive, shared between pom and aut
                     theta[j] ~ dunif(neg.int[j],0)
              }
              
              
              
              lab_effect ~ dnorm(0,0.01)
              
              sigma_pomona ~ dunif(0,50)
              tau_pomona <- 1/(sigma_pomona*sigma_pomona)
              
              sigma_aut ~ dunif(0,50)
              tau_aut <- 1/(sigma_aut*sigma_aut)
              
              
              #hyper priors
              
              # multivariate pom aut mean and sd
              mu_pom_aut_mean ~ dmnorm(mu_means,tau_means)
              mu_pom_aut_precision ~ dwish(omega,wishdf)
              
              # extract serovar peak level means
              mu_overall_pomona <- mu_pom_aut_mean[1]
              mu_overall_aut <- mu_pom_aut_mean[2]
              
              # multivariate precision matrix
              inverse_mu_pom_aut_precision <- inverse(mu_pom_aut_precision)
              sigma_overall_pomona <- inverse_mu_pom_aut_precision[1,1]^(1/2)
              sigma_overall_aut <- inverse_mu_pom_aut_precision[2,2]^(1/2)
              
              
              
              # decay rate parameters pomona
              log_shape_pomona_overall_mean ~ dnorm(log_shape_pomona_overall_mean_prior_mean,1/(log_shape_pomona_overall_mean_prior_sd*log_shape_pomona_overall_mean_prior_sd))
              
              log_shape_pomona_overall_sd ~ dgamma(log_shape_pomona_overall_sd_prior_shape,log_shape_pomona_overall_sd_prior_rate)
              log_shape_pomona_overall_tau <- 1/(log_shape_pomona_overall_sd*log_shape_pomona_overall_sd)
              
              shape_pomona_overall_mean <- exp(log_shape_pomona_overall_mean) + 1
              
              
              log_scale_pomona_overall_mean ~ dnorm(log_scale_pomona_overall_mean_prior_mean,1/(log_scale_pomona_overall_mean_prior_sd*log_scale_pomona_overall_mean_prior_sd))
              
              log_scale_pomona_overall_sd ~ dgamma(log_scale_pomona_overall_sd_prior_shape,log_scale_pomona_overall_sd_prior_rate)
              log_scale_pomona_overall_tau <- 1/(log_scale_pomona_overall_sd*log_scale_pomona_overall_sd)
              
              scale_pomona_overall_mean <- exp(log_scale_pomona_overall_mean)
              
              
              
              
              # decay rate parameters aut
              log_shape_aut_overall_mean ~ dnorm(log_shape_aut_overall_mean_prior_mean,1/(log_shape_aut_overall_mean_prior_sd*log_shape_aut_overall_mean_prior_sd))
              
              log_shape_aut_overall_sd ~ dgamma(log_shape_aut_overall_sd_prior_shape,log_shape_aut_overall_sd_prior_rate)
              log_shape_aut_overall_tau <- 1/(log_shape_aut_overall_sd*log_shape_aut_overall_sd)
              
              shape_aut_overall_mean <- exp(log_shape_aut_overall_mean) + 1
              
              
              log_scale_aut_overall_mean ~ dnorm(log_scale_aut_overall_mean_prior_mean,1/(log_scale_aut_overall_mean_prior_sd*log_scale_aut_overall_mean_prior_sd))
              
              log_scale_aut_overall_sd ~ dgamma(log_scale_aut_overall_sd_prior_shape,log_scale_aut_overall_sd_prior_rate)
              log_scale_aut_overall_tau <- 1/(log_scale_aut_overall_sd*log_scale_aut_overall_sd)
              
              scale_aut_overall_mean <- exp(log_scale_aut_overall_mean)
              
              
              
              
              
              
              # likelihood
              for(i in 1:length(time)){
                     
                     # predicted level pomona
                     titer_pred_pomona[i] <-  exp.mu_pomona[id[i]]*(1+(shape_pomona[id[i]]-1)*(exp.mu_pomona[id[i]]^(shape_pomona[id[i]]-1))*scale_pomona[id[i]]*(time[i]-theta[id[i]]))^(-1/(shape_pomona[id[i]]-1))
                     log2_titer_pred_pomona[i] <- 1+(log(titer_pred_pomona[i]/100)/log(2))
                     lab_effect_log2_titer_pred_pomona[i] <- lab_effect*lab[i] + log2_titer_pred_pomona[i]
                     true_titer_pomona[i] ~ dnorm(lab_effect_log2_titer_pred_pomona[i],tau_pomona)
                     # interval censoring
                     titer_pomona[i] ~ dinterval(true_titer_pomona[i], c(1,2,3,4,5,6,7,8,9,10,11,12,13))
                     
                     
                     titer_pred_aut[i] <-  exp.mu_aut[id[i]]*(1+(shape_aut[id[i]]-1)*(exp.mu_aut[id[i]]^(shape_aut[id[i]]-1))*scale_aut[id[i]]*(time[i]-theta[id[i]]))^(-1/(shape_aut[id[i]]-1))
                     log2_titer_pred_aut[i] <- 1+(log(titer_pred_aut[i]/100)/log(2))
                     lab_effect_log2_titer_pred_aut[i] <- lab_effect*lab[i] + log2_titer_pred_aut[i]
                     true_titer_aut[i] ~ dnorm(lab_effect_log2_titer_pred_aut[i],tau_aut)
                     # interval censoring
                     titer_aut[i] ~ dinterval(true_titer_aut[i], c(1,2,3,4,5,6,7,8,9,10,11,12,13))
                     
                     
                     # store sum loglikelihood as parameter for WAIC calculation
                     LogLik[i] = log(dnorm(titer_pomona[i],true_titer_pomona[i],tau_pomona)) + log(dnorm(titer_aut[i],true_titer_aut[i],tau_aut))
              }
       }
       
       
       
       
       model.file = "jags_model.txt"
       write.model(model2.uncorrelated_shape_scale.mod,model.file)
       
       
       model.jags = jags.model(model.file,
                               data=list('titer_pomona'=observed.data.for.fitting$titer.pomona,
                                         'titer_aut'=observed.data.for.fitting$titer.aut,
                                         'time'=observed.data.for.fitting$time,
                                         'id'=observed.data.for.fitting$id,
                                         'neg.int'=neg.intervals,
                                         'lab'=observed.data.for.fitting$lab,
                                         'mu_means' = c(peak.titer.mean.prior.mean.pomona,peak.titer.mean.prior.mean.aut),
                                         'tau_means' = diag(c((1/(peak.titer.mean.prior.sd.pomona^2)),(1/(peak.titer.mean.prior.sd.aut^2)))),
                                         'omega' = diag(c((1/(peak.titer.sd.prior.pomona^2)),(1/(peak.titer.sd.prior.aut^2)))),
                                         'wishdf' = 2,
                                         'log_shape_pomona_overall_mean_prior_mean' = log.mean.shape.prior.mean,
                                         'log_shape_pomona_overall_mean_prior_sd' = log.mean.shape.prior.sd,
                                         'log_scale_pomona_overall_mean_prior_mean' = log.mean.scale.prior.mean,
                                         'log_scale_pomona_overall_mean_prior_sd' = log.mean.scale.prior.sd,
                                         'log_shape_aut_overall_mean_prior_mean' = log.mean.shape.prior.mean,
                                         'log_shape_aut_overall_mean_prior_sd' = log.mean.shape.prior.sd,
                                         'log_scale_aut_overall_mean_prior_mean' = log.mean.scale.prior.mean,
                                         'log_scale_aut_overall_mean_prior_sd' = log.mean.scale.prior.sd,
                                         'log_shape_pomona_overall_sd_prior_shape' = log.sd.shape.prior.shape,
                                         'log_shape_pomona_overall_sd_prior_rate' = log.sd.shape.prior.rate,
                                         'log_scale_pomona_overall_sd_prior_shape' = log.sd.scale.prior.shape,
                                         'log_scale_pomona_overall_sd_prior_rate' = log.sd.scale.prior.rate,
                                         'log_shape_aut_overall_sd_prior_shape' = log.sd.shape.prior.shape,
                                         'log_shape_aut_overall_sd_prior_rate' = log.sd.shape.prior.rate,
                                         'log_scale_aut_overall_sd_prior_shape' = log.sd.scale.prior.shape,
                                         'log_scale_aut_overall_sd_prior_rate' = log.sd.scale.prior.rate
                               ),
                               #inits=list('beta0'=-1),
                               n.chains=6,
                               n.adapt = 5000)
       
       
       # burn in
       update(model.jags, n.iter = burn.in, by = 1)
       
       
       
       # draw samples
       
       post = coda.samples(model.jags, c("mu_overall_pomona","sigma_overall_pomona","mu_overall_aut","sigma_overall_aut","theta","LogLik","mu_pomona","mu_aut","mu_pom_aut_mean","shape_pomona_overall_mean","scale_pomona_overall_mean","shape_aut_overall_mean","scale_aut_overall_mean","shape_pomona","shape_aut","scale_pomona","scale_aut","log_shape_pomona_overall_sd","log_scale_pomona_overall_sd","log_shape_aut_overall_sd","log_scale_aut_overall_sd","lab_effect"), n.iter = iterations, thin = 10)
       
       
       
       chains.burn.df = mcmclist.to.dataframe(post)
       
       
       # save output, needs existing MCMC_runs folder in working directory
       filename = "MCMC_antibody_decay_power"
       print(filename)
       saveRDS(chains.burn.df,filename)
       
       
       
} else {
       # load previous output if not re-running model, speeds up markdown knitting
       chains.burn.df.3=readRDS("MCMC_antibody_decay_power.RDS")
}

2.5 Gather output three functions

if(run.mcmc==T) {
       

       chains.burn.df.2 = chains.burn.df.original
       
       N.inds = length(grep("theta",names(chains.burn.df.1)))
       
       # get posterior estimates     
       
       
       post.overall = data.frame(model = 1:3,
                                 RMSE = NA,
                                 WAIC = NA,
                                 LOOIC = NA,
                                 peak.titer.mean = NA,
                                 peak.titer.aut.mean = NA,
                                 peak.titer.mean.95lo = NA,
                                 peak.titer.mean.95hi = NA,
                                 peak.titer.sd = NA,
                                 peak.titer.sd.95lo = NA,
                                 peak.titer.sd.95hi = NA,
                                 decay.mean = NA,
                                 decay.aut.mean = NA,
                                 decay.mean.95lo = NA,
                                 decay.mean.95hi = NA,
                                 shape.mean = NA,
                                 shape.mean.95lo = NA,
                                 shape.mean.95hi = NA,
                                 scale.mean = NA,
                                 scale.mean.95lo = NA,
                                 scale.mean.95hi = NA
       )
       
       
       
       
       
       
       
       
       post.individual = data.frame(model = rep(1:3,each = N.inds),
                                    id = rep(1:N.inds,3),
                                    toi.mean = NA,
                                    toi.mean.95lo = NA,
                                    toi.mean.95hi = NA,
                                    toi.95.information.gained = NA,
                                    toi.mean.50lo = NA,
                                    toi.mean.50hi = NA,
                                    toi.50.information.gained = NA,
                                    peak.titer.mean = NA,
                                    peak.titer.mean.95lo = NA,
                                    peak.titer.mean.95hi = NA,
                                    decay.rate.mean = NA,
                                    decay.rate.mean.95lo = NA,
                                    decay.rate.mean.95hi = NA,
                                    shape.mean = NA,
                                    shape.mean.95lo = NA,
                                    shape.mean.95hi = NA,
                                    scale.mean = NA,
                                    scale.mean.95lo = NA,
                                    scale.mean.95hi = NA
       )
       
       
       
       models = 1:3
       
       for(model in 1:length(models)){
              
              chains.burn.df.current = get(paste0("chains.burn.df.",model))
              
              
              # pop level parameters    
              
              chains.burn.df.loglik = chains.burn.df.current[,grep("LogLik",colnames(chains.burn.df.current))]
              
              chains.burn.df.loglik = chains.burn.df.loglik[is.finite(rowSums(chains.burn.df.loglik)),]
              
              loglik.all.matrix = as.matrix(chains.burn.df.loglik)
              rm(chains.burn.df.loglik)
              
              WAIC.val = waic(loglik.all.matrix)
              post.overall[model,"WAIC"] = round(WAIC.val$estimates["waic",][1],1)
              LOOIC.val = loo(loglik.all.matrix)
              post.overall[model,"LOOIC"] = round(LOOIC.val$estimates["looic",][1],1)
              
              
              dens = density(chains.burn.df.current$mu_overall_pomona)
              hpd.int.peak.titer = HDInterval::hdi(dens,credMass = 0.95,allowSplit=F)  
              peak.titer.overall.mean = mean(chains.burn.df.current$mu_overall_pomona)
              
              post.overall[model,"peak.titer.mean"] = peak.titer.overall.mean
              post.overall[model,"peak.titer.mean.95lo"] = hpd.int.peak.titer[1]
              post.overall[model,"peak.titer.mean.95hi"] = hpd.int.peak.titer[2]
              
              dens = density(chains.burn.df.current$mu_overall_aut)
              peak.titer.overall.mean = mean(chains.burn.df.current$mu_overall_aut)
              
              post.overall[model,"peak.titer.aut.mean"] = peak.titer.overall.mean
              
              
              dens = density(chains.burn.df.current$sigma_overall_pomona)
              hpd.int.peak.titer.sd = HDInterval::hdi(dens,credMass = 0.95,allowSplit=F)  
              peak.titer.sd.overall.mean = mean(chains.burn.df.current$sigma_overall_pomona)
              
              post.overall[model,"peak.titer.sd"] = peak.titer.sd.overall.mean
              post.overall[model,"peak.titer.sd.95lo"] = hpd.int.peak.titer.sd[1]
              post.overall[model,"peak.titer.sd.95hi"] = hpd.int.peak.titer.sd[2]
              
              if(model %in% c(1,2)) {
                     dens = density(chains.burn.df.current$decay_overall_pomona)
                     hpd.int.decay = HDInterval::hdi(dens,credMass = 0.95,allowSplit=F)  
                     decay.overall.mean = mean(chains.burn.df.current$decay_overall_pomona)
                     
                     post.overall[model,"decay.mean"] = decay.overall.mean
                     post.overall[model,"decay.mean.95lo"] = hpd.int.decay[1]
                     post.overall[model,"decay.mean.95hi"] = hpd.int.decay[2]
                     
                     dens = density(chains.burn.df.current$decay_overall_aut)
                     hpd.int.decay = HDInterval::hdi(dens,credMass = 0.95,allowSplit=F)  
                     decay.overall.mean = mean(chains.burn.df.current$decay_overall_aut)
                     
                     post.overall[model,"decay.aut.mean"] = decay.overall.mean
                     
              } else {
                     
                     dens = density(chains.burn.df.current$shape_pomona_overall_mean)
                     hpd.int.shape = HDInterval::hdi(dens,credMass = 0.95,allowSplit=F)  
                     shape.overall.mean = mean(chains.burn.df.current$shape_pomona_overall_mean)
                     
                     post.overall[model,"shape.mean"] = shape.overall.mean
                     post.overall[model,"shape.mean.95lo"] = hpd.int.shape[1]
                     post.overall[model,"shape.mean.95hi"] = hpd.int.shape[2]   
                     
                     
                     dens = density(chains.burn.df.current$scale_pomona_overall_mean)
                     hpd.int.scale = HDInterval::hdi(dens,credMass = 0.95,allowSplit=F)  
                     scale.overall.mean = mean(chains.burn.df.current$scale_pomona_overall_mean)
                     
                     post.overall[model,"scale.mean"] = scale.overall.mean
                     post.overall[model,"scale.mean.95lo"] = hpd.int.scale[1]
                     post.overall[model,"scale.mean.95hi"] = hpd.int.scale[2]   
                     
              }
              
              
              
              # individual level parameters   
              
              for(i in 1:N.inds){
                     
                     
                     post.individual[which(post.individual$id==i & post.individual$model==model),"toi.mean"] = max.dens.fun(chains.burn.df.current[,paste0("theta[",i,"]")])
                     
                     dens = density(chains.burn.df.current[,paste0("theta[",i,"]")])
                     hpd.int.toi = HDInterval::hdi(dens,credMass = 0.95,allowSplit=F)  
                     
                     post.individual[which(post.individual$id==i & post.individual$model==model),"toi.mean.95lo"] = hpd.int.toi[1]
                     post.individual[which(post.individual$id==i & post.individual$model==model),"toi.mean.95hi"] = hpd.int.toi[2]
                     post.individual[which(post.individual$id==i & post.individual$model==model),"toi.95.information.gained"] = round(1-(hpd.int.toi[2]-hpd.int.toi[1])/abs(neg.intervals[i]),3)
                     
                     
                     
                     hpd.int.toi = HDInterval::hdi(dens,credMass = 0.5,allowSplit=F)  
                     post.individual[which(post.individual$id==i & post.individual$model==model),"toi.mean.50lo"] = hpd.int.toi[1]
                     post.individual[which(post.individual$id==i & post.individual$model==model),"toi.mean.50hi"] = hpd.int.toi[2]
                     post.individual[which(post.individual$id==i & post.individual$model==model),"toi.50.information.gained"] = round(1-(hpd.int.toi[2]-hpd.int.toi[1])/abs(neg.intervals[i]),3)
                     
                     
                     post.individual[which(post.individual$id==i & post.individual$model==model),"peak.titer.mean"] = mean(chains.burn.df.current[,paste0("mu_pomona[",i,"]")])
                     
                     dens = density(chains.burn.df.current[,paste0("mu_pomona[",i,"]")])
                     hpd.int.peak.titer = HDInterval::hdi(dens,credMass = 0.95,allowSplit=F)  
                     
                     post.individual[which(post.individual$id==i & post.individual$model==model),"peak.titer.mean.95lo"] = hpd.int.peak.titer[1]
                     post.individual[which(post.individual$id==i & post.individual$model==model),"peak.titer.mean.95hi"] = hpd.int.peak.titer[2]
                     
                     
                     if(model %in% 1:2) {
                            post.individual[which(post.individual$id==i & post.individual$model==model),"decay.rate.mean"] = mean(chains.burn.df.current[,paste0("decay_pomona[",i,"]")])
                            
                            dens = density(chains.burn.df.current[,paste0("decay_pomona[",i,"]")])
                            hpd.int.peak.titer = HDInterval::hdi(dens,credMass = 0.95,allowSplit=F)  
                            
                            post.individual[which(post.individual$id==i & post.individual$model==model),"decay.rate.mean.95lo"] = hpd.int.peak.titer[1]
                            post.individual[which(post.individual$id==i & post.individual$model==model),"decay.rate.mean.95hi"] = hpd.int.peak.titer[2]
                     }
                     
                     
                     if(model == 3) {
                            post.individual[which(post.individual$id==i & post.individual$model==model),"shape.mean"] = mean(chains.burn.df.current[,paste0("shape_pomona[",i,"]")])
                            
                            dens = density(chains.burn.df.current[,paste0("shape_pomona[",i,"]")])
                            hpd.int.peak.titer = HDInterval::hdi(dens,credMass = 0.95,allowSplit=F)  
                            
                            post.individual[which(post.individual$id==i & post.individual$model==model),"shape.mean.95lo"] = hpd.int.peak.titer[1]
                            post.individual[which(post.individual$id==i & post.individual$model==model),"shape.mean.95hi"] = hpd.int.peak.titer[2]
                            
                            post.individual[which(post.individual$id==i & post.individual$model==model),"scale.mean"] = mean(chains.burn.df.current[,paste0("scale_pomona[",i,"]")])
                            
                            dens = density(chains.burn.df.current[,paste0("scale_pomona[",i,"]")])
                            hpd.int.peak.titer = HDInterval::hdi(dens,credMass = 0.95,allowSplit=F)  
                            
                            post.individual[which(post.individual$id==i & post.individual$model==model),"scale.mean.95lo"] = hpd.int.peak.titer[1]
                            post.individual[which(post.individual$id==i & post.individual$model==model),"scale.mean.95hi"] = hpd.int.peak.titer[2]
                            
                            
                     }
                     
                     
                     
                     
                     
                     
                     
              }  
              
              
              
              # calculate RMSE and adjust times of infection         
              if(model == 1) {
                     
                     observed.data.for.fitting.single = observed.data.for.fitting
                     observed.data.for.fitting.single$time.since.infection = NA
                     observed.data.for.fitting.single$log.titer = observed.data.for.fitting.single$titer.pomona
                     
                     for(i in 1:N.inds){
                            idx.current = which(observed.data.for.fitting.single$id == i)
                            observed.data.for.fitting.single$time.since.infection[idx.current] = observed.data.for.fitting.single$time[idx.current] - post.individual[which(post.individual$model==model & post.individual$id == i),"toi.mean"]
                     }
                     
                     
                     post.overall[model,"RMSE"] = round(RMSE.fun.linear.individual.decay(peak.titers = post.individual[which(post.individual$model==model),"peak.titer.mean"],slopes = post.individual[which(post.individual$model==model),"decay.rate.mean"], observed.data = observed.data.for.fitting.single) ,5)
                     
              }
              
              if(model == 2) {
                     
                     
                     observed.data.for.fitting.double = observed.data.for.fitting
                     observed.data.for.fitting.double$time.since.infection = NA
                     observed.data.for.fitting.double$titer = observed.data.for.fitting.double$titer.pomona
                     
                     for(i in 1:N.inds){
                            idx.current = which(observed.data.for.fitting.double$id == i)
                            observed.data.for.fitting.double$time.since.infection[idx.current] = observed.data.for.fitting.double$time[idx.current] - post.individual[which(post.individual$model==model & post.individual$id == i),"toi.mean"]
                     }
                     
                     
                     post.overall[model,"RMSE"] = round(RMSE.fun.double.exp.individual.decay(peak.titers = post.individual[which(post.individual$model==model),"peak.titer.mean"],decay.rate = -post.individual[which(post.individual$model==model),"decay.rate.mean"], observed.data = observed.data.for.fitting.double) ,5)
                     
                     
              }
              
              if(model == 3) {
                     observed.data.for.fitting.power = observed.data.for.fitting
                     observed.data.for.fitting.power$time.since.infection = NA
                     observed.data.for.fitting.power$titer = observed.data.for.fitting.power$titer.pomona
                     
                     for(i in 1:N.inds){
                            idx.current = which(observed.data.for.fitting.power$id == i)
                            observed.data.for.fitting.power$time.since.infection[idx.current] = observed.data.for.fitting.power$time[idx.current] - post.individual[which(post.individual$model==model & post.individual$id == i),"toi.mean"]
                     }
                     
                     
                     post.overall[model,"RMSE"] = round(RMSE.fun.power.individual.decay(peak.titers = post.individual[which(post.individual$model==model),"peak.titer.mean"],shape = post.individual[which(post.individual$model==model),"shape.mean"],scale = post.individual[which(post.individual$model==model),"scale.mean"], observed.data = observed.data.for.fitting.power),5) 
              }
              
       }
       
       post.overall$gain[which(post.overall$model==1)] = mean(post.individual$toi.95.information.gained[which(post.individual$model==1)])
       post.overall$gain[which(post.overall$model==2)] = mean(post.individual$toi.95.information.gained[which(post.individual$model==2)])
       post.overall$gain[which(post.overall$model==3)] = mean(post.individual$toi.95.information.gained[which(post.individual$model==3)])
       
       
       post.overall$model[1] = "Single exp"
       post.overall$model[2] = "Double exp"
       post.overall$model[3] = "Power"
       
       post.individual$model[which(post.individual$model==1)] = "Single exp"
       post.individual$model[which(post.individual$model==2)] = "Double exp"
       post.individual$model[which(post.individual$model==3)] = "Power"
       
       post.overall$model = factor(post.overall$model,levels = c("Single exp","Double exp","Power"))
       post.individual$model = factor(post.individual$model,levels = c("Single exp","Double exp","Power"))
       
       all.fun.post.overall = post.overall
       
       kable(all.fun.post.overall ,"html") %>%
              kable_styling(bootstrap_options  =  c("striped", "hover","condensed"),full_width = F)
       
       # export posterior estimates
       saveRDS(all.fun.post.overall,"Function_comparison_post_overall.RDS")
}
rm(chains.burn.df.1,chains.burn.df.2,chains.burn.df.3, chains.burn.df.current)
gc()
##              used   (Mb) gc trigger    (Mb) limit (Mb)   max used   (Mb)
## Ncells    2879197  153.8    5336052   285.0         NA    4024375  215.0
## Vcells 1087145358 8294.3 1548713904 11815.8      32768 1290510914 9845.9

3 Output

Double exponential function only.

3.0.1 Stats

chains.burn.df.loglik = chains.burn.df[,grep("LogLik",colnames(chains.burn.df))]

chains.burn.df.loglik = chains.burn.df.loglik[is.finite(rowSums(chains.burn.df.loglik)),]

loglik.all.matrix = as.matrix(chains.burn.df.loglik)
rm(chains.burn.df.loglik)

LOOIC.val = loo(loglik.all.matrix)
LOOIC.val.est = LOOIC.val$estimates["looic",][1]

peak.titer.individual.means.pomona = apply(chains.burn.df[,paste0("peak.titer.pomona.",uid)],MARGIN = 2,mean)
decay.rate.individual.means.pomona = apply(chains.burn.df[,paste0("decay.rate.pomona.",uid)],MARGIN = 2,mean)

observed.data.for.fitting.temp = observed.data.for.fitting
colnames(observed.data.for.fitting.temp)[4] = "titer"
RMSE.val.pomona = round(RMSE.fun.double.exp.individual.decay(peak.titers = peak.titer.individual.means.pomona,decay.rates = -decay.rate.individual.means.pomona, observed.data = observed.data.for.fitting.temp),3)

peak.titer.individual.means.aut = apply(chains.burn.df[,paste0("peak.titer.aut.",uid)],MARGIN = 2,mean)
decay.rate.individual.means.aut = apply(chains.burn.df[,paste0("decay.rate.aut.",uid)],MARGIN = 2,mean)

observed.data.for.fitting.temp = observed.data.for.fitting
colnames(observed.data.for.fitting.temp)[4] = "titer"
RMSE.val.aut = round(RMSE.fun.double.exp.individual.decay(peak.titers = peak.titer.individual.means.aut,decay.rates = -decay.rate.individual.means.aut, observed.data = observed.data.for.fitting.temp),3)
LOOIC value: 5052.9536887
Root mean square error (pomona): 2.435.
Root mean square error (aut): 2.68.

3.0.2 Lab effect

CDC vs Ithaca

dens = density(chains.burn.df$lab.effect)
lab.effect.mean = mean(chains.burn.df$lab.effect)
hpd.int.lab.effect = HDInterval::hdi(dens,credMass = 0.95,allowSplit=F)  

lab.fit = MASS::fitdistr(chains.burn.df$lab.effect,densfun = "normal")

Antibody levels for samples (Pomona or Autumnalis) not tested at CDC are on average 0.5904501 (95% CrI 0.3885021-0.7942814; SD = 0.1030068) higher.

This is taken into account when fitting all model parameters.


plot.lab.effect.1 = ggplot(data=chains.burn.df,aes(x=lab.effect)) +
       geom_density(color=brewer.pal(11,"Spectral")[10],fill=brewer.pal(11,"Spectral")[10],alpha=0.6,size=1) +
       geom_vline(xintercept=lab.effect.mean,col="black",size=0.8,alpha=0.6) +
       geom_vline(xintercept=hpd.int.lab.effect[1],col="black",size=0.8,linetype="dotted",alpha=0.6) +
       geom_vline(xintercept=hpd.int.lab.effect[2],col="black",size=0.8,linetype="dotted",alpha=0.6) +
       theme_light(base_family = "Avenir Next") +
       xlab("Lab effect") +
       ylab("Posterior density") +
       theme(plot.title = element_text(size = 11),
             text=element_text(size=11),
             axis.text=element_text(size=10),
             axis.title.y = element_text(margin = ggplot2::margin(r=10)),
             plot.margin = unit(c(0.5,0.75,0.5,0.5),"cm"),
             legend.position = "none"
       )


plot.lab.effect.2 = plot.MCMC.chains(input.data = chains.burn.df.original, column.to.plot = which(colnames(chains.burn.df)=="lab.effect"),y.axis.label = "Lab effect",thinning=10)
plot.lab.effect.1

plot.lab.effect.2

3.0.3 Pomona

3.0.3.1 Posterior estimate mean peak titer:


dens = density(chains.burn.df$peak.titer.overall.pomona)
hpd.int.peak.titer.pomona = HDInterval::hdi(dens,credMass = 0.95,allowSplit=F)  
peak.titer.overall.maxdens.pomona=round(dens$x[which.max(dens$y)],2)
peak.titer.overall.mean.pomona = mean(chains.burn.df$peak.titer.overall.pomona)
peak.titer.overall.median.pomona = median(chains.burn.df$peak.titer.overall.pomona)


dens = density(chains.burn.df$peak.titer.sd.overall.pomona)
hpd.int.peak.titer.sd.pomona = HDInterval::hdi(dens,credMass = 0.95,allowSplit=F)  
peak.titer.sd.overall.maxdens.pomona=round(dens$x[which.max(dens$y)],2)
peak.titer.sd.overall.mean.pomona = mean(chains.burn.df$peak.titer.sd.overall.pomona)
peak.titer.sd.overall.median.pomona = median(chains.burn.df$peak.titer.sd.overall.pomona)


plot1 = ggplot(data=chains.burn.df,aes(x=peak.titer.overall.pomona)) +
       geom_density(color=brewer.pal(11,"Spectral")[10],fill=brewer.pal(11,"Spectral")[10],alpha=0.6,size=1) +
       geom_vline(xintercept=peak.titer.overall.maxdens.pomona,col="black",size=0.8,alpha=0.6) +
       geom_vline(xintercept=hpd.int.peak.titer.pomona[1],col="black",size=0.8,linetype="dotted",alpha=0.6) +
       geom_vline(xintercept=hpd.int.peak.titer.pomona[2],col="black",size=0.8,linetype="dotted",alpha=0.6) +
       theme_light(base_family = "Avenir Next") +
       xlab("Peak antibody level mean (Pomona) \n(log2 dilution)") +
       ylab("Posterior density") +
       theme(plot.title = element_text(size = 11),
             text=element_text(size=11),
             axis.text=element_text(size=10),
             axis.title.y = element_text(margin = ggplot2::margin(r=10)),
             plot.margin = unit(c(0.5,0.75,0.5,0.5),"cm"),
             legend.position = "none"
       )


plot2 = plot.MCMC.chains(input.data = chains.burn.df.original, column.to.plot = which(colnames(chains.burn.df)=="peak.titer.overall.pomona"),y.axis.label = "Peak antibody level mean (Pomona) \n(log2 dilution)",thinning=10)
plot1

plot2


  • Posterior estimate (max dens): 6.96
  • Posterior estimate (mean): 6.9725804
  • Posterior estimate (median): 6.9720479
  • Highest density credible interval = 6.699767 - 7.2470921

3.0.3.2 Posterior estimate standard deviation of peak titer:

plot1 = ggplot(data=chains.burn.df,aes(x=peak.titer.sd.overall.pomona)) +
       geom_density(color=brewer.pal(11,"Spectral")[10],fill=brewer.pal(11,"Spectral")[10],alpha=0.6,size=1) +
       geom_vline(xintercept=peak.titer.sd.overall.maxdens.pomona,col="black",size=0.8,alpha=0.6) +
       geom_vline(xintercept=hpd.int.peak.titer.sd.pomona[1],col="black",size=0.8,linetype="dotted",alpha=0.6) +
       geom_vline(xintercept=hpd.int.peak.titer.sd.pomona[2],col="black",size=0.8,linetype="dotted",alpha=0.6) +
       theme_light(base_family = "Avenir Next") +
       xlab("Peak antibody level SD (Pomona) \n(log2 dilution)") +
       ylab("Posterior density") +
       theme(plot.title = element_text(size = 11),
             text=element_text(size=11),
             axis.text=element_text(size=10),
             axis.title.y = element_text(margin = ggplot2::margin(r=10)),
             plot.margin = unit(c(0.5,0.75,0.5,0.5),"cm"),
             legend.position = "none"
       )

plot2 = plot.MCMC.chains(input.data = chains.burn.df.original, column.to.plot = which(colnames(chains.burn.df)=="peak.titer.sd.overall.pomona"), y.axis.label = "Peak antibody level SD (Pomona) \n(log2 dilution)",thinning=10)
plot1

plot2


  • Posterior estimate (max dens): 1.82
  • Posterior estimate (mean): 1.8431128
  • Posterior estimate (median): 1.8409946
  • Highest density credible interval = 1.6153003 - 2.0719977


3.0.3.3 Peak titer distribution using the posterior mean estimates of peak titer mean and SD

Including 200 random draws from the posteriors:

Nsamp = 200  
means = sample(chains.burn.df$peak.titer.overall.pomona,Nsamp,replace = F)
sds = sample(chains.burn.df$peak.titer.sd.overall.pomona,Nsamp,replace = F)


ggplot(data = data.frame(x = 0:15),aes(x=x)) +
       scale_x_continuous(breaks=0:15) +
       mapply(function(mean,sd){
              stat_function(fun = dnorm, colour = brewer.pal(11,"Spectral")[10],alpha=0.5,args = list(mean = mean,sd = sd),size=0.3)
       },
       mean = means,
       sd = sds
       ) +
       stat_function(fun = dnorm, colour = brewer.pal(11,"Spectral")[1],args = list(mean = peak.titer.overall.mean.pomona,sd = peak.titer.sd.overall.mean.pomona),size=1.5) +
       xlab("Peak antibody level (Pomona) \n(log2 dilution)") +
       ylab("Posterior distribution") +
       theme_light(base_family = "Avenir Next") +
       theme(plot.title = element_text(size = 11),
             text=element_text(size=11),
             axis.text=element_text(size=10),
             axis.title.y = element_text(margin = ggplot2::margin(r=10)),
             legend.position = "none",
             plot.margin = unit(c(0.5,0.75,0.5,0.5),"cm")
       )






3.0.3.4 Posterior estimate mean decay rate:


dens = density(chains.burn.df$decay.rate.overall.pomona)
hpd.int.decay.rate.pomona = HDInterval::hdi(dens,credMass = 0.95,allowSplit=F)  
decay.rate.overall.maxdens.pomona=round(dens$x[which.max(dens$y)],6)
decay.rate.overall.mean.pomona = mean(chains.burn.df$decay.rate.overall.pomona)
decay.rate.overall.median.pomona = median(chains.burn.df$decay.rate.overall.pomona)


dens = density(chains.burn.df$decay.rate.sd.overall.pomona)
hpd.int.decay.rate.sd.pomona = HDInterval::hdi(dens,credMass = 0.95,allowSplit=F)  
decay.rate.sd.overall.maxdens.pomona=round(dens$x[which.max(dens$y)],6)
decay.rate.sd.overall.mean.pomona = mean(chains.burn.df$decay.rate.sd.overall.pomona)
decay.rate.sd.overall.median.pomona = median(chains.burn.df$decay.rate.sd.overall.pomona)


plot1 = ggplot(data=chains.burn.df,aes(x=decay.rate.overall.pomona)) +
       geom_density(color=brewer.pal(11,"Spectral")[10],fill=brewer.pal(11,"Spectral")[10],alpha=0.6,size=1) +
       geom_vline(xintercept=decay.rate.overall.mean.pomona,col="black",size=0.8,alpha=0.6) +
       geom_vline(xintercept=hpd.int.decay.rate.pomona[1],col="black",size=0.8,linetype="dotted",alpha=0.6) +
       geom_vline(xintercept=hpd.int.decay.rate.pomona[2],col="black",size=0.8,linetype="dotted",alpha=0.6) +
       theme_light(base_family = "Avenir Next") +
       xlab("Decay rate mean (Pomona) \n(1/day)") +
       ylab("Posterior density") +
       theme(plot.title = element_text(size = 11),
             text=element_text(size=11),
             axis.text=element_text(size=10),
             axis.title.y = element_text(margin = ggplot2::margin(r=10)),
             plot.margin = unit(c(0.5,0.75,0.5,0.5),"cm"),
             legend.position = "none"
       )

plot2 = plot.MCMC.chains(input.data = chains.burn.df.original, column.to.plot = which(colnames(chains.burn.df)=="decay.rate.overall.pomona"), y.axis.label = "Decay rate mean (Pomona) \n(1/day)",thinning=10)
plot1

plot2


  • Posterior estimate (max dens): 8.58^{-4}
  • Posterior estimate (mean): 8.6091115^{-4}
  • Posterior estimate (median): 8.5991881^{-4}
  • Highest density credible interval = 7.8285993^{-4} - 9.4081133^{-4}

3.0.3.5 Posterior estimate standard deviation of decay rate:

plot1 = ggplot(data=chains.burn.df,aes(x=decay.rate.sd.overall.pomona)) +
       geom_density(color=brewer.pal(11,"Spectral")[10],fill=brewer.pal(11,"Spectral")[10],alpha=0.6,size=1) +
       geom_vline(xintercept=decay.rate.sd.overall.mean.pomona,col="black",size=0.8,alpha=0.6) +
       geom_vline(xintercept=hpd.int.decay.rate.sd.pomona[1],col="black",size=0.8,linetype="dotted",alpha=0.6) +
       geom_vline(xintercept=hpd.int.decay.rate.sd.pomona[2],col="black",size=0.8,linetype="dotted",alpha=0.6) +
       theme_light(base_family = "Avenir Next") +
       xlab("Decay rate SD (Pomona) \n(1/day)") +
       ylab("Posterior density") +
       theme(plot.title = element_text(size = 11),
             text=element_text(size=11),
             axis.text=element_text(size=10),
             axis.title.y = element_text(margin = ggplot2::margin(r=10)),
             plot.margin = unit(c(0.5,0.75,0.5,0.5),"cm"),
             legend.position = "none"
       )


plot2 = plot.MCMC.chains(input.data = chains.burn.df.original, column.to.plot = which(colnames(chains.burn.df)=="decay.rate.sd.overall.pomona"), y.axis.label = "Decay rate SD (Pomona) \n(1/day)",thinning=10)
plot1

plot2


  • Posterior estimate (max dens): 3.46^{-4}
  • Posterior estimate (mean): 3.4935971^{-4}
  • Posterior estimate (median): 3.481226^{-4}
  • Highest density credible interval = 2.7815012^{-4} - 4.2372114^{-4}


3.0.3.6 Decay rate distribution using the posterior mean estimates of peak titer mean and SD

Including 200 random draws from the posteriors:

Nsamp = 200  
means = sample(chains.burn.df$decay.rate.overall.pomona,Nsamp,replace = F)
sds = sample(chains.burn.df$decay.rate.sd.overall.pomona,Nsamp,replace = F)


ggplot(data = data.frame(x = seq(-0.0002,0.0019,0.00001)),aes(x=x)) +
       mapply(function(mean,sd){
              stat_function(fun = dnorm, colour = brewer.pal(11,"Spectral")[10],alpha=0.5,args = list(mean = mean,sd = sd),size=0.3)
       },
       mean = means,
       sd = sds
       ) +
       stat_function(fun = dnorm, colour = brewer.pal(11,"Spectral")[1],args = list(mean = decay.rate.overall.mean.pomona,sd = decay.rate.sd.overall.mean.pomona),size=1.5) +
       xlab("Decay rate (Pomona) \n(1/day)") +
       ylab("Posterior distribution") +
       theme_light(base_family = "Avenir Next") +
       theme(plot.title = element_text(size = 11),
             text=element_text(size=11),
             axis.text=element_text(size=10),
             axis.title.y = element_text(margin = ggplot2::margin(r=10)),
             legend.position = "none",
             plot.margin = unit(c(0.5,0.75,0.5,0.5),"cm"),
       )

3.0.3.7 Joint posterior peak titer vs decay means

Population level means:

joint.dens = chains.burn.df[,c("decay.rate.overall.pomona","peak.titer.overall.pomona")]
joint.dens$dens = get_density(chains.burn.df$decay.rate.overall.pomona,chains.burn.df$peak.titer.overall.pomona,n = 80)


joint.plot = ggplot(joint.dens,aes(x = decay.rate.overall.pomona, y = peak.titer.overall.pomona,color=dens)) +
       geom_point(alpha = 0.4,size = 0.5) +
       scale_colour_gradientn(colors = rev(brewer.pal(n = 6,"Spectral")),name="Density") +
       theme_light(base_family = "Avenir Next") +
       theme(plot.title  =  element_text(size  = 14),
             text = element_text(size = 11),
             axis.text = element_text(size = 11),
             axis.title.y  =  element_text(margin  =  ggplot2::margin(r = 10)),
             plot.margin = unit(c(0.5,0.75,0.5,0.5),"cm")) +
       xlab("Decay rate posterior mean (Pomona) \n(1/day)") +
       ylab("Peak antibody level \n posterior mean (Pomona) \n(log2 dilution)")


joint.plot


Individual posterior means:

# 1200 posterior values per individual    
n.it.each = 200
ind.means = data.frame(id = rep(1:N.inds,each = n.it.each*6),
                       peak.titer.pomona = NA,
                       peak.titer.aut = NA,
                       decay.rate.pomona = NA,
                       decay.rate.aut = NA,
                       iteration = NA)
ind.means.2 = data.frame(id = 1:N.inds,
                         peak.titer.pomona = NA,
                         peak.titer.aut = NA,
                         decay.rate.pomona = NA,
                         decay.rate.aut = NA)


for(i in 1:N.inds){
       ind.means$peak.titer.pomona[which(ind.means$id == i)] = chains.burn.df[which(chains.burn.df$iteration == tail(chains.burn.df$iteration,n.it.each)),paste0("peak.titer.pomona.",i)]
       ind.means$peak.titer.aut[which(ind.means$id == i)] = chains.burn.df[which(chains.burn.df$iteration == tail(chains.burn.df$iteration,n.it.each)),paste0("peak.titer.aut.",i)]
       ind.means$decay.rate.pomona[which(ind.means$id == i)] = chains.burn.df[which(chains.burn.df$iteration == tail(chains.burn.df$iteration,n.it.each)),paste0("decay.rate.pomona.",i)]
       ind.means$decay.rate.aut[which(ind.means$id == i)] = chains.burn.df[which(chains.burn.df$iteration == tail(chains.burn.df$iteration,n.it.each)),paste0("decay.rate.aut.",i)]
       ind.means$iteration = chains.burn.df[which(chains.burn.df$iteration == tail(chains.burn.df$iteration,n.it.each)),"iteration"]
       
       
       ind.means.2$peak.titer.pomona[which(ind.means.2$id == i)] = mean(chains.burn.df[,paste0("peak.titer.pomona.",i)])
       ind.means.2$peak.titer.aut[which(ind.means.2$id == i)] = mean(chains.burn.df[,paste0("peak.titer.aut.",i)])
       ind.means.2$decay.rate.pomona[which(ind.means.2$id == i)] = mean(chains.burn.df[,paste0("decay.rate.pomona.",i)])
       ind.means.2$decay.rate.aut[which(ind.means.2$id == i)] = mean(chains.burn.df[,paste0("decay.rate.aut.",i)])
}





ind.means$dens = get_density(ind.means$peak.titer.pomona,ind.means$decay.rate.pomona,n = 80)



ggplot(ind.means,aes(x = decay.rate.pomona, y = peak.titer.pomona,color=dens)) +
       geom_point(alpha = 0.4,size = 0.5) +
       scale_colour_gradientn(colors = rev(brewer.pal(n = 6,"Spectral")),name="Density") +
       theme_light(base_family = "Avenir Next") +
       theme(plot.title = element_text(size = 13),
             text=element_text(size=13),
             axis.text=element_text(size=13),
             axis.title.y = element_text(margin = ggplot2::margin(r=10)),
             #legend.position = c(0.78,0.85),
             legend.text = element_text(size=10),
             legend.title = element_text(size=11),
             #legend.position = "none",
             plot.margin = unit(c(0.5,0.75,0.5,0.5),"cm"),
             legend.background = element_rect(colour = "transparent", fill = "transparent"),
             legend.key = element_rect(fill = NA)
       ) +
       xlab("Decay rate posterior samples \n(1/day)") +
       ylab("Peak antibody level posterior samples \n(log2 dilution)")

joint.plot.peak.decay = ggplot(ind.means,aes(x = decay.rate.pomona, y = peak.titer.pomona,color=dens)) +
       geom_point(alpha = 0.4,size = 0.5) +
       scale_colour_gradientn(colors = rev(brewer.pal(n = 6,"Spectral")),name="Density") +
       theme_light(base_family = "Avenir Next") +
       theme(plot.title = element_text(size = 13),
             text=element_text(size=13),
             axis.text=element_text(size=13),
             axis.title.y = element_text(margin = ggplot2::margin(r=10)),
             #legend.position = c(0.78,0.85),
             #legend.position = "none",
             legend.text = element_text(size=10),
             legend.title = element_text(size=11),
             plot.margin = unit(c(0.5,0.75,0.5,0.5),"cm"),
             legend.background = element_rect(colour = "transparent", fill = "transparent"),
             legend.key = element_rect(fill = NA)
       ) +
       xlab("Decay rate posterior samples \n(1/day)") +
       ylab("Peak antibody level \n posterior samples \n(log2 dilution)") +
       labs(tag="(C)")

Correlation:

n.it = 400

posterior.cor = data.frame(iteration = rep(tail(unique(chains.burn.df$iteration),n.it),6),
                           chain = rep(1:6,each = n.it),
                           slope = NA,
                           p.val = NA,
                           adj.r2 = NA)
for(i in 1:nrow(posterior.cor)){
       cur.dat = data.frame(peak.titer = reshape2::melt(chains.burn.df[which(chains.burn.df$iteration==posterior.cor$iteration[i] & chains.burn.df$chain == posterior.cor$chain[i]),paste0("peak.titer.pomona.",1:N.inds)])[,2],
                            decay.rate = reshape2::melt(chains.burn.df[which(chains.burn.df$iteration==posterior.cor$iteration[i] & chains.burn.df$chain == posterior.cor$chain[i]),paste0("decay.rate.pomona.",1:N.inds)])[,2]
       )
       
       cur.lm = summary(lm(peak.titer~decay.rate,data = cur.dat))
       posterior.cor$slope[i] = cur.lm$coefficients[2]
       posterior.cor$p.val[i] = round(cur.lm$coefficients[8],5)
       posterior.cor$adj.r2[i] = cur.lm$adj.r.squared
}


dens = density(posterior.cor$p.val)
hpd.int.p.val.pomona = HDInterval::hdi(dens,credMass = 0.95,allowSplit=F)  

dens = density(posterior.cor$slope)
hpd.int.slope.pomona = HDInterval::hdi(dens,credMass = 0.95,allowSplit=F)  

dens = density(posterior.cor$adj.r2)
hpd.int.adj.r2.pomona = HDInterval::hdi(dens,credMass = 0.95,allowSplit=F)  

Median p value: 0.512485 (95% CrI 0.0226156-0.9959449.
Proportion of P values below 0.05: 0.5136561

Mean slope: 91.0964541 (95% CrI -492.3092912-636.2949554.

Median adjusted R^2: -0.0018662 (95% CrI -0.00441-0.0081118.

ggplot(data=posterior.cor,aes(x=slope)) +
       geom_density(color=brewer.pal(11,"Spectral")[10],fill=brewer.pal(11,"Spectral")[10],alpha=0.6,size=1) +
       geom_vline(xintercept=hpd.int.slope.pomona[1],col="black",size=0.8,linetype="dotted",alpha=0.6) +
       geom_vline(xintercept=hpd.int.slope.pomona[2],col="black",size=0.8,linetype="dotted",alpha=0.6) +
       theme_light(base_family = "Avenir Next") +
       xlab("Slope decay rate vs peak antibody level") +
       ylab("Posterior density") +
       theme(plot.title = element_text(size = 11),
             text=element_text(size=11),
             axis.text=element_text(size=10),
             axis.title.y = element_text(margin = ggplot2::margin(r=10)),
             plot.margin = unit(c(0.5,0.75,0.5,0.5),"cm"),
             legend.position = "none"
       )

ggplot(data=posterior.cor,aes(x=p.val)) +
       geom_density(color=brewer.pal(11,"Spectral")[10],fill=brewer.pal(11,"Spectral")[10],alpha=0.6,size=1) +
       geom_vline(xintercept=hpd.int.p.val.pomona[1],col="black",size=0.8,linetype="dotted",alpha=0.6) +
       geom_vline(xintercept=hpd.int.p.val.pomona[2],col="black",size=0.8,linetype="dotted",alpha=0.6) +
       theme_light(base_family = "Avenir Next") +
       xlab("P value regression decay rate vs peak antibody level") +
       ylab("Posterior density") +
       theme(plot.title = element_text(size = 11),
             text=element_text(size=11),
             axis.text=element_text(size=10),
             axis.title.y = element_text(margin = ggplot2::margin(r=10)),
             plot.margin = unit(c(0.5,0.75,0.5,0.5),"cm"),
             legend.position = "none"
       )

ggplot(data=posterior.cor,aes(x=adj.r2)) +
       geom_density(color=brewer.pal(11,"Spectral")[10],fill=brewer.pal(11,"Spectral")[10],alpha=0.6,size=1) +
       geom_vline(xintercept=mean(posterior.cor$adj.r2),col="black",size=0.8,alpha=0.6) +
       geom_vline(xintercept=hpd.int.adj.r2.pomona[1],col="black",size=0.8,linetype="dotted",alpha=0.6) +
       geom_vline(xintercept=hpd.int.adj.r2.pomona[2],col="black",size=0.8,linetype="dotted",alpha=0.6) +
       theme_light(base_family = "Avenir Next") +
       xlab("Adj. R^2 decay rate vs peak antibody level") +
       ylab("Posterior density") +
       theme(plot.title = element_text(size = 11),
             text=element_text(size=11),
             axis.text=element_text(size=10),
             axis.title.y = element_text(margin = ggplot2::margin(r=10)),
             plot.margin = unit(c(0.5,0.75,0.5,0.5),"cm"),
             legend.position = "none"
       )

Using one posterior mean for each individual:

ggplot(ind.means.2,aes(x = decay.rate.pomona, y = peak.titer.pomona)) +
       geom_point(alpha = 1,size = 0.8,col = brewer.pal(n = 11,"Spectral")[10]) +
       theme_light(base_family = "Avenir Next") +
       theme(plot.title  =  element_text(size  = 14),
             text = element_text(size = 11),
             axis.text = element_text(size = 11),
             axis.title.y  =  element_text(margin  =  ggplot2::margin(r = 10)),
             plot.margin = unit(c(0.5,0.75,0.5,0.5),"cm")) +
       xlab("Decay rate posterior \nindividual means (Pomona) \n(1/day)") +
       ylab("Peak antibody level \nposterior individual means (Pomona) \n(log2 dilution)")

Correlation using posterior means:

lm1 = lm(peak.titer.pomona~decay.rate.pomona,data = ind.means.2)
# plot(lm1)
summary(lm1)
## 
## Call:
## lm(formula = peak.titer.pomona ~ decay.rate.pomona, data = ind.means.2)
## 
## Residuals:
##     Min      1Q  Median      3Q     Max 
## -5.2254 -1.0340  0.0666  1.0380  4.4835 
## 
## Coefficients:
##                     Estimate Std. Error t value Pr(>|t|)    
## (Intercept)           8.0982     0.3239   25.00  < 2e-16 ***
## decay.rate.pomona -1307.7614   362.3005   -3.61 0.000358 ***
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Residual standard error: 1.53 on 305 degrees of freedom
## Multiple R-squared:  0.04097,    Adjusted R-squared:  0.03782 
## F-statistic: 13.03 on 1 and 305 DF,  p-value: 0.0003583

Two functions taken from the predicted values of the regression model:

exp.dat.1 = data.frame(x = 1:3000,y = exp.fun(start.titer = 7.5,rate = -0.0004,time = 1:3000))
exp.dat.2 = data.frame(x = 1:3000,y = exp.fun(start.titer = 6.5,rate = -0.0011,time = 1:3000))

plot(1:3000,exp.dat.1$y,type="l",ylim = c(0,8))
lines(1:3000,exp.dat.2$y,col="red")





3.0.3.8 Fitted function


(red = estimated function)

fit.dat = exp.fun(start.titer = peak.titer.overall.mean.pomona, rate = -decay.rate.overall.mean.pomona, time = 0:max(observed.data.for.fitting$time))

fit.dat = data.frame(titer = fit.dat, time = 0:max(observed.data.for.fitting$time))


ggplot() +
       geom_line(data = observed.data.for.fitting,aes(x = time,y = titer.pomona,col = id,group = id),alpha = 0.4,size = 0.6) +
       geom_point(data = observed.data.for.fitting,aes(x = time,y = titer.pomona,col = id,group = id),size=1.2,alpha = 0.9) +
       geom_line(data=fit.dat,aes(x = time, y = titer),col=brewer.pal(11,"Spectral")[1],size=1.3) +
       scale_color_gradientn(colours  =  brewer.pal(4,"Spectral")) +
       scale_y_continuous(breaks = seq(0,15,2)) +
       theme_light(base_family = "Avenir Next") +
       theme(plot.title  =  element_text(size  = 12),
             text = element_text(size = 11),
             axis.text = element_text(size = 11),
             axis.title.y  =  element_text(margin  =  ggplot2::margin(r = 10)),
             legend.position  =  "none",
             plot.margin = unit(c(0.5,0.75,0.5,0.5),"cm"))+
       xlab("Time since first positive sample (days)") +
       ylab("Antibody level (Pomona) \n(log2 dilution)")


Time = time since peak antibody level

fit.dat.pomona = exp.fun(start.titer = peak.titer.overall.mean.pomona, rate = -decay.rate.overall.mean.pomona, time = 0:max(observed.data.for.fitting$time.since.peak))

fit.dat.pomona = data.frame(titer = fit.dat.pomona, time = 0:max(observed.data.for.fitting$time.since.peak))


ggplot() +
       geom_line(data = observed.data.for.fitting,aes(x = time.since.peak,y = titer.pomona,col = id,group = id),alpha = 0.4,size = 0.6) +
       geom_point(data = observed.data.for.fitting,aes(x = time.since.peak,y = titer.pomona,col = id,group = id),size=1.2,alpha = 0.9) +
       geom_line(data=fit.dat.pomona,aes(x = time, y = titer),col=brewer.pal(11,"Spectral")[1],size=1.3) +
       scale_color_gradientn(colours  =  brewer.pal(4,"Spectral")) +
       scale_y_continuous(breaks = seq(0,15,2)) +
       theme_light(base_family = "Avenir Next") +
       theme(plot.title  =  element_text(size  = 12),
             text = element_text(size = 11),
             axis.text = element_text(size = 11),
             axis.title.y  =  element_text(margin  =  ggplot2::margin(r = 10)),
             legend.position  =  "none",
             plot.margin = unit(c(0.5,0.75,0.5,0.5),"cm"))+
       xlab("Time since peak antibody level (days)") +
       ylab("Antibody level (Pomona) \n(log2 dilution)")

Including fitted functions for 200 random samples from the posterior distribution (within 95% credible interval):

# sample N values from posterior distribution to get sense of error

N.samp = 200


set.seed(1234);sampled.iterations = sample(which(chains.burn.df$peak.titer.overall.pomona > hpd.int.peak.titer.pomona[1] & chains.burn.df$peak.titer.overall.pomona < hpd.int.peak.titer.pomona[2]), size = N.samp, replace = T)

peak.titer.samp.mean.pomona = chains.burn.df$peak.titer.overall.pomona[sampled.iterations]

peak.titer.samp.sd.pomona = chains.burn.df$peak.titer.sd.overall.pomona[sampled.iterations]


peak.titer.samp.df.pomona = data.frame(peak.titer.samp.mean.pomona,peak.titer.samp.sd.pomona)

peak.titer.samp.fun = function(x) rnorm(1,x[1],x[2])

peak.titer.samp.pomona = apply(peak.titer.samp.df.pomona,1,peak.titer.samp.fun)

decay.rate.samp.mean.pomona = chains.burn.df$decay.rate.overall.pomona[sampled.iterations]

decay.rate.samp.pomona = mean(chains.burn.df$decay.rate.overall.pomona)

plot.times = 0:max(observed.data.for.fitting$time.since.peak)

fit.dat.cloud.pomona = data.frame(time = rep(plot.times,N.samp), samp = rep(1:N.samp,each = length(plot.times)), titer = NA)

for(i in 1:N.samp){
       
       fit.dat.cloud.pomona$titer[which(fit.dat.cloud.pomona$samp == i)] = exp.fun(start.titer = peak.titer.samp.pomona[i], rate = -decay.rate.samp.pomona, time = plot.times)
       
}



ggplot() +
       geom_line(data=fit.dat.cloud.pomona, aes(x = time, y = titer, group = samp), col = brewer.pal(11,"Spectral")[10],alpha=0.4,size=0.3) +
       geom_line(data=fit.dat.pomona,aes(x = time, y = titer),col=brewer.pal(11,"Spectral")[1],size=1.5) +
       scale_y_continuous(breaks = seq(0,15,2)) +
       theme_light(base_family = "Avenir Next") +
       theme(plot.title  =  element_text(size  = 12),
             text = element_text(size = 11),
             axis.text = element_text(size = 11),
             axis.title.y  =  element_text(margin  =  ggplot2::margin(r = 10)),
             legend.position  =  "none",
             plot.margin = unit(c(0.5,0.75,0.5,0.5),"cm"))+
       xlab("Time since peak antibody level (days)") +
       ylab("Antibody level (Pomona) \n(log2 dilution)")

3.0.4 Autumnalis

3.0.4.1 Posterior estimate mean peak titer:


dens = density(chains.burn.df$peak.titer.overall.aut)
hpd.int.peak.titer.aut = HDInterval::hdi(dens,credMass = 0.95,allowSplit=F)  
peak.titer.overall.maxdens.aut=round(dens$x[which.max(dens$y)],2)
peak.titer.overall.mean.aut = mean(chains.burn.df$peak.titer.overall.aut)
peak.titer.overall.median.aut = median(chains.burn.df$peak.titer.overall.aut)


dens = density(chains.burn.df$peak.titer.sd.overall.aut)
hpd.int.peak.titer.sd.aut = HDInterval::hdi(dens,credMass = 0.95,allowSplit=F)  
peak.titer.sd.overall.maxdens.aut=round(dens$x[which.max(dens$y)],2)
peak.titer.sd.overall.mean.aut = mean(chains.burn.df$peak.titer.sd.overall.aut)
peak.titer.sd.overall.median.aut = median(chains.burn.df$peak.titer.sd.overall.aut)


plot1 = ggplot(data=chains.burn.df,aes(x=peak.titer.overall.aut)) +
       geom_density(color=brewer.pal(11,"Spectral")[10],fill=brewer.pal(11,"Spectral")[10],alpha=0.6,size=1) +
       geom_vline(xintercept=peak.titer.overall.maxdens.aut,col="black",size=0.8,alpha=0.6) +
       geom_vline(xintercept=hpd.int.peak.titer.aut[1],col="black",size=0.8,linetype="dotted",alpha=0.6) +
       geom_vline(xintercept=hpd.int.peak.titer.aut[2],col="black",size=0.8,linetype="dotted",alpha=0.6) +
       theme_light(base_family = "Avenir Next") +
       xlab("Peak antibody level mean (Autumnalis) \n(log2 dilution)") +
       ylab("Posterior density") +
       theme(plot.title = element_text(size = 11),
             text=element_text(size=11),
             axis.text=element_text(size=10),
             axis.title.y = element_text(margin = ggplot2::margin(r=10)),
             plot.margin = unit(c(0.5,0.75,0.5,0.5),"cm"),
             legend.position = "none"
       )

plot2 = plot.MCMC.chains(input.data = chains.burn.df, column.to.plot = which(colnames(chains.burn.df)=="peak.titer.overall.aut"),y.axis.label = "Peak antibody level mean (Autumnalis) \n(log2 dilution)",thinning=10)
plot1

plot2


  • Posterior estimate (max dens): 7.45
  • Posterior estimate (mean): 7.4654311
  • Posterior estimate (median): 7.4635202
  • Highest density credible interval = 7.095945 - 7.8322631

3.0.4.2 Posterior estimate standard deviation of peak titer:

plot1 = ggplot(data=chains.burn.df,aes(x=peak.titer.sd.overall.aut)) +
       geom_density(color=brewer.pal(11,"Spectral")[10],fill=brewer.pal(11,"Spectral")[10],alpha=0.6,size=1) +
       geom_vline(xintercept=peak.titer.sd.overall.maxdens.aut,col="black",size=0.8,alpha=0.6) +
       geom_vline(xintercept=hpd.int.peak.titer.sd.aut[1],col="black",size=0.8,linetype="dotted",alpha=0.6) +
       geom_vline(xintercept=hpd.int.peak.titer.sd.aut[2],col="black",size=0.8,linetype="dotted",alpha=0.6) +
       theme_light(base_family = "Avenir Next") +
       xlab("Peak antibody level SD (Autumnalis) \n(log2 dilution)") +
       ylab("Posterior density") +
       theme(plot.title = element_text(size = 11),
             text=element_text(size=11),
             axis.text=element_text(size=10),
             axis.title.y = element_text(margin = ggplot2::margin(r=10)),
             plot.margin = unit(c(0.5,0.75,0.5,0.5),"cm"),
             legend.position = "none"
       )
plot2 = plot.MCMC.chains(input.data = chains.burn.df, column.to.plot = which(colnames(chains.burn.df)=="peak.titer.sd.overall.aut"), y.axis.label = "Peak antibody level SD (Autumnalis) \n(log2 dilution)",thinning=10)
plot1

plot2


  • Posterior estimate (max dens): 2.08
  • Posterior estimate (mean): 2.0984924
  • Posterior estimate (median): 2.0947261
  • Highest density credible interval = 1.8159382 - 2.3866797


3.0.4.3 Peak titer distribution using the posterior mean estimates of peak titer mean and SD

Including 200 random draws from the posteriors:

Nsamp = 200  
means = sample(chains.burn.df$peak.titer.overall.aut,Nsamp,replace = F)
sds = sample(chains.burn.df$peak.titer.sd.overall.aut,Nsamp,replace = F)


ggplot(data = data.frame(x = 0:15),aes(x=x)) +
       scale_x_continuous(breaks=0:15) +
       mapply(function(mean,sd){
              stat_function(fun = dnorm, colour = brewer.pal(11,"Spectral")[10],alpha=0.5,args = list(mean = mean,sd = sd),size=0.3)
       },
       mean = means,
       sd = sds
       ) +
       stat_function(fun = dnorm, colour = brewer.pal(11,"Spectral")[1],args = list(mean = peak.titer.overall.mean.aut,sd = peak.titer.sd.overall.mean.aut),size=1.5) +
       xlab("Peak antibody level (Autumnalis) \n(log2 dilution)") +
       ylab("Posterior distribution") +
       theme_light(base_family = "Avenir Next") +
       theme(plot.title = element_text(size = 11),
             text=element_text(size=11),
             axis.text=element_text(size=10),
             axis.title.y = element_text(margin = ggplot2::margin(r=10)),
             legend.position = "none",
             plot.margin = unit(c(0.5,0.75,0.5,0.5),"cm")
       )






3.0.4.4 Posterior estimate mean decay rate:


dens = density(chains.burn.df$decay.rate.overall.aut)
hpd.int.decay.rate.aut = HDInterval::hdi(dens,credMass = 0.95,allowSplit=F)  
decay.rate.overall.maxdens.aut=round(dens$x[which.max(dens$y)],6)
decay.rate.overall.mean.aut = mean(chains.burn.df$decay.rate.overall.aut)
decay.rate.overall.median.aut = median(chains.burn.df$decay.rate.overall.aut)


dens = density(chains.burn.df$decay.rate.sd.overall.aut)
hpd.int.decay.rate.sd.aut = HDInterval::hdi(dens,credMass = 0.95,allowSplit=F)  
decay.rate.sd.overall.maxdens.aut=round(dens$x[which.max(dens$y)],6)
decay.rate.sd.overall.mean.aut = mean(chains.burn.df$decay.rate.sd.overall.aut)
decay.rate.sd.overall.median.aut = median(chains.burn.df$decay.rate.sd.overall.aut)


plot1 = ggplot(data=chains.burn.df,aes(x=decay.rate.overall.aut)) +
       geom_density(color=brewer.pal(11,"Spectral")[10],fill=brewer.pal(11,"Spectral")[10],alpha=0.6,size=1) +
       geom_vline(xintercept=decay.rate.overall.mean.aut,col="black",size=0.8,alpha=0.6) +
       geom_vline(xintercept=hpd.int.decay.rate.aut[1],col="black",size=0.8,linetype="dotted",alpha=0.6) +
       geom_vline(xintercept=hpd.int.decay.rate.aut[2],col="black",size=0.8,linetype="dotted",alpha=0.6) +
       theme_light(base_family = "Avenir Next") +
       xlab("Decay rate mean (Autumnalis) \n(1/day)") +
       ylab("Posterior density") +
       theme(plot.title = element_text(size = 11),
             text=element_text(size=11),
             axis.text=element_text(size=10),
             axis.title.y = element_text(margin = ggplot2::margin(r=10)),
             plot.margin = unit(c(0.5,0.75,0.5,0.5),"cm"),
             legend.position = "none"
       )
plot2 = plot.MCMC.chains(input.data = chains.burn.df, column.to.plot = which(colnames(chains.burn.df)=="decay.rate.overall.aut"), y.axis.label = "Decay rate mean (Autumnalis) \n(1/day)",thinning=10)
plot1

plot2


  • Posterior estimate (max dens): 6.54^{-4}
  • Posterior estimate (mean): 6.5954534^{-4}
  • Posterior estimate (median): 6.583367^{-4}
  • Highest density credible interval = 5.6526982^{-4} - 7.5483711^{-4}

3.0.4.5 Posterior estimate standard deviation of decay rate:

plot1 = ggplot(data=chains.burn.df,aes(x=decay.rate.sd.overall.aut)) +
       geom_density(color=brewer.pal(11,"Spectral")[10],fill=brewer.pal(11,"Spectral")[10],alpha=0.6,size=1) +
       geom_vline(xintercept=decay.rate.sd.overall.mean.aut,col="black",size=0.8,alpha=0.6) +
       geom_vline(xintercept=hpd.int.decay.rate.sd.aut[1],col="black",size=0.8,linetype="dotted",alpha=0.6) +
       geom_vline(xintercept=hpd.int.decay.rate.sd.aut[2],col="black",size=0.8,linetype="dotted",alpha=0.6) +
       theme_light(base_family = "Avenir Next") +
       xlab("Decay rate SD (Autumnalis) \n(1/day)") +
       ylab("Posterior density") +
       theme(plot.title = element_text(size = 11),
             text=element_text(size=11),
             axis.text=element_text(size=10),
             axis.title.y = element_text(margin = ggplot2::margin(r=10)),
             plot.margin = unit(c(0.5,0.75,0.5,0.5),"cm"),
             legend.position = "none"
       )


plot2 = plot.MCMC.chains(input.data = chains.burn.df, column.to.plot = which(colnames(chains.burn.df)=="decay.rate.sd.overall.aut"), y.axis.label = "Decay rate SD (Autumnalis) \n(1/day)",thinning=10)
plot1

plot2


  • Posterior estimate (max dens): 2.7^{-4}
  • Posterior estimate (mean): 2.7441069^{-4}
  • Posterior estimate (median): 2.731166^{-4}
  • Highest density credible interval = 1.878479^{-4} - 3.6263849^{-4}


3.0.4.6 Decay rate distribution using the posterior mean estimates of peak titer mean and SD

Including 200 random draws from the posteriors:

Nsamp = 200  
means = sample(chains.burn.df$decay.rate.overall.aut,Nsamp,replace = F)
sds = sample(chains.burn.df$decay.rate.sd.overall.aut,Nsamp,replace = F)


ggplot(data = data.frame(x = seq(-0.0002,0.0016,0.00001)),aes(x=x)) +
       mapply(function(mean,sd){
              stat_function(fun = dnorm, colour = brewer.pal(11,"Spectral")[10],alpha=0.5,args = list(mean = mean,sd = sd),size=0.3)
       },
       mean = means,
       sd = sds
       ) +
       stat_function(fun = dnorm, colour = brewer.pal(11,"Spectral")[1],args = list(mean = decay.rate.overall.mean.aut,sd = decay.rate.sd.overall.mean.aut),size=1.5) +
       xlab("Decay rate (Autumnalis) \n(1/day)") +
       ylab("Posterior distribution") +
       theme_light(base_family = "Avenir Next") +
       theme(plot.title = element_text(size = 11),
             text=element_text(size=11),
             axis.text=element_text(size=10),
             axis.title.y = element_text(margin = ggplot2::margin(r=10)),
             legend.position = "none",
             plot.margin = unit(c(0.5,0.75,0.5,0.5),"cm"),
       )

3.0.4.7 Joint posterior peak titer vs decay means

joint.dens = chains.burn.df[,c("decay.rate.overall.aut","peak.titer.overall.aut")]
joint.dens$dens = get_density(chains.burn.df$decay.rate.overall.aut,chains.burn.df$peak.titer.overall.aut,n = 80)


joint.plot = ggplot(joint.dens,aes(x = decay.rate.overall.aut, y = peak.titer.overall.aut,color=dens)) +
       geom_point(alpha = 0.4,size = 0.5) +
       scale_colour_gradientn(colors = rev(brewer.pal(n = 6,"Spectral")),name="Density") +
       theme_light(base_family = "Avenir Next") +
       theme(plot.title  =  element_text(size  = 14),
             text = element_text(size = 11),
             axis.text = element_text(size = 11),
             axis.title.y  =  element_text(margin  =  ggplot2::margin(r = 10)),
             plot.margin = unit(c(0.5,0.75,0.5,0.5),"cm")) +
       xlab("Decay rate posterior mean (Autumnalis) \n(1/day)") +
       ylab("Peak titer posterior mean (Autumnalis) \n(log2 dilution)")


joint.plot


Individual posterior means:

ind.means$dens = get_density(ind.means$peak.titer.aut,ind.means$decay.rate.aut,n = 80)


joint.plot = ggplot(ind.means,aes(x = decay.rate.aut, y = peak.titer.aut,color=dens)) +
       geom_point(alpha = 0.4,size = 0.5) +
       scale_colour_gradientn(colors = rev(brewer.pal(n = 6,"Spectral")),name="Density") +
       theme_light(base_family = "Avenir Next") +
       theme(plot.title  =  element_text(size  = 14),
             text = element_text(size = 11),
             axis.text = element_text(size = 11),
             axis.title.y  =  element_text(margin  =  ggplot2::margin(r = 10)),
             plot.margin = unit(c(0.5,0.75,0.5,0.5),"cm")) +
       xlab("Decay rate posterior individual means (Autumnalis) \n(1/day)") +
       ylab("Peak antibody level \n posterior individual means (Autumnalis) \n(log2 dilution)")


joint.plot

ggplot(ind.means.2,aes(x = decay.rate.aut, y = peak.titer.aut)) +
       geom_point(alpha = 1,size = 0.8,col = brewer.pal(n = 11,"Spectral")[10]) +
       theme_light(base_family = "Avenir Next") +
       theme(plot.title  =  element_text(size  = 14),
             text = element_text(size = 11),
             axis.text = element_text(size = 11),
             axis.title.y  =  element_text(margin  =  ggplot2::margin(r = 10)),
             plot.margin = unit(c(0.5,0.75,0.5,0.5),"cm")) +
       xlab("Decay rate posterior individual means (Autumnalis) \n(1/day)") +
       ylab("Peak antibody level \n posterior individual means (Autumnalis) \n(log2 dilution)")

(points on one line = no Autumnalis sample available, so sampling from the prior.
variation along peak titer axis is due to the correlation between Pomona and Autumnalis peak level)





3.0.4.8 Fitted function


(red = estimated function)

fit.dat.aut = exp.fun(start.titer = peak.titer.overall.mean.aut, rate = -decay.rate.overall.mean.aut, time = 0:max(observed.data.for.fitting$time))

fit.dat.aut = data.frame(titer = fit.dat.aut, time = 0:max(observed.data.for.fitting$time))


ggplot() +
       geom_line(data = observed.data.for.fitting,aes(x = time,y = titer.aut,col = id,group = id),alpha = 0.4,size = 0.6) +
       geom_point(data = observed.data.for.fitting,aes(x = time,y = titer.aut,col = id,group = id),size=1.2,alpha = 0.9) +
       geom_line(data=fit.dat.aut,aes(x = time, y = titer),col=brewer.pal(11,"Spectral")[1],size=1.3) +
       scale_color_gradientn(colours  =  brewer.pal(4,"Spectral")) +
       scale_y_continuous(breaks = seq(0,15,2)) +
       theme_light(base_family = "Avenir Next") +
       theme(plot.title  =  element_text(size  = 12),
             text = element_text(size = 11),
             axis.text = element_text(size = 11),
             axis.title.y  =  element_text(margin  =  ggplot2::margin(r = 10)),
             legend.position  =  "none",
             plot.margin = unit(c(0.5,0.75,0.5,0.5),"cm"))+
       xlab("Time since first positive sample (days)") +
       ylab("Antibody level (Autumnalis) \n(log2 dilution)")


Time = time since peak antibody level

fit.dat.aut = exp.fun(start.titer = peak.titer.overall.mean.aut, rate = -decay.rate.overall.mean.aut, time = 0:max(observed.data.for.fitting$time.since.peak))

fit.dat.aut = data.frame(titer = fit.dat.aut, time = 0:max(observed.data.for.fitting$time.since.peak))


ggplot() +
       geom_line(data = observed.data.for.fitting,aes(x = time.since.peak,y = titer.aut,col = id,group = id),alpha = 0.4,size = 0.6) +
       geom_point(data = observed.data.for.fitting,aes(x = time.since.peak,y = titer.aut,col = id,group = id),size=1.2,alpha = 0.9) +
       geom_line(data=fit.dat.aut,aes(x = time, y = titer),col=brewer.pal(11,"Spectral")[1],size=1.3) +
       scale_color_gradientn(colours  =  brewer.pal(4,"Spectral")) +
       scale_y_continuous(breaks = seq(0,15,2)) +
       theme_light(base_family = "Avenir Next") +
       theme(plot.title  =  element_text(size  = 12),
             text = element_text(size = 11),
             axis.text = element_text(size = 11),
             axis.title.y  =  element_text(margin  =  ggplot2::margin(r = 10)),
             legend.position  =  "none",
             plot.margin = unit(c(0.5,0.75,0.5,0.5),"cm"))+
       xlab("Time since peak antibody level (days)") +
       ylab("Antibody level (Autumnalis) \n(log2 dilution)")

Including fitted functions for 200 random samples from the posterior distribution (within 95% credible interval):

# sample N values from posterior distribution to get sense of error

N.samp = 200


set.seed(1234);sampled.iterations = sample(which(chains.burn.df$peak.titer.overall.aut > hpd.int.peak.titer.aut[1] & chains.burn.df$peak.titer.overall.aut < hpd.int.peak.titer.aut[2]), size = N.samp, replace = T)

peak.titer.samp.mean.aut = chains.burn.df$peak.titer.overall.aut[sampled.iterations]

peak.titer.samp.sd.aut = chains.burn.df$peak.titer.sd.overall.aut[sampled.iterations]


peak.titer.samp.df.aut = data.frame(peak.titer.samp.mean.aut,peak.titer.samp.sd.aut)

peak.titer.samp.fun = function(x) rnorm(1,x[1],x[2])

peak.titer.samp.aut = apply(peak.titer.samp.df.aut,1,peak.titer.samp.fun)

decay.rate.samp.mean.aut = chains.burn.df$decay.rate.overall.aut[sampled.iterations]

decay.rate.samp.aut = mean(chains.burn.df$decay.rate.overall.aut)

plot.times = 0:max(observed.data.for.fitting$time.since.peak)

fit.dat.cloud.aut = data.frame(time = rep(plot.times,N.samp), samp = rep(1:N.samp,each = length(plot.times)), titer = NA)

for(i in 1:N.samp){
       
       fit.dat.cloud.aut$titer[which(fit.dat.cloud.aut$samp == i)] = exp.fun(start.titer = peak.titer.samp.aut[i], rate = -decay.rate.samp.aut, time = plot.times)
       
}



ggplot() +
       geom_line(data=fit.dat.cloud.aut, aes(x = time, y = titer, group = samp), col = brewer.pal(11,"Spectral")[10],alpha=0.4,size=0.3) +
       geom_line(data=fit.dat.aut,aes(x = time, y = titer),col=brewer.pal(11,"Spectral")[1],size=1.5) +
       scale_color_gradientn(colours  =  brewer.pal(4,"Spectral")) +
       scale_y_continuous(breaks = seq(0,15,2)) +
       theme_light(base_family = "Avenir Next") +
       theme(plot.title  =  element_text(size  = 12),
             text = element_text(size = 11),
             axis.text = element_text(size = 11),
             axis.title.y  =  element_text(margin  =  ggplot2::margin(r = 10)),
             legend.position  =  "none",
             plot.margin = unit(c(0.5,0.75,0.5,0.5),"cm"))+
       xlab("Time since peak antibody level (days)") +
       ylab("Antibody level (Autumnalis) \n(log2 dilution)")

3.1 Pomona and Autumnalis

3.1.1 Peak antibody level

Correlation between Pomona and Autumnalis peak antibody levels

r2.fun = function(x) {
       summary(lm(as.numeric(x[1:(length(x)/2)])~as.numeric(x[((length(x)/2)+1):length(x)])))$r.squared
}

id.aut.not.all.na = unique(observed.data.for.fitting$id[which(!is.na(observed.data.for.fitting$titer.aut))])

r2s = apply(chains.burn.df[which(chains.burn.df$iteration %in% tail(chains.burn.df$iteration,1000)),c(paste0("peak.titer.aut.",id.aut.not.all.na),paste0("peak.titer.pomona.",id.aut.not.all.na))],1,r2.fun)

dens = density(r2s)
hpd.int.r2s = HDInterval::hdi(dens,credMass = 0.95,allowSplit=F)  
maxdens.r2s=round(dens$x[which.max(dens$y)],2)



intercept.fun = function(x) {
       summary(lm(as.numeric(x[1:(length(x)/2)])~as.numeric(x[((length(x)/2)+1):length(x)])))$coefficients[1]
}

intercepts = apply(chains.burn.df[which(chains.burn.df$iteration %in% tail(chains.burn.df$iteration,1000)),c(paste0("peak.titer.aut.",id.aut.not.all.na),paste0("peak.titer.pomona.",id.aut.not.all.na))],1,intercept.fun)

dens = density(intercepts)
hpd.int.intercepts = HDInterval::hdi(dens,credMass = 0.95,allowSplit=F)  
maxdens.intercepts=round(dens$x[which.max(dens$y)],2)


slope.fun = function(x) {
       summary(lm(as.numeric(x[1:(length(x)/2)])~as.numeric(x[((length(x)/2)+1):length(x)])))$coefficients[2]
}

slopes = apply(chains.burn.df[which(chains.burn.df$iteration %in% tail(chains.burn.df$iteration,1000)),c(paste0("peak.titer.aut.",id.aut.not.all.na),paste0("peak.titer.pomona.",id.aut.not.all.na))],1,slope.fun)

dens = density(slopes)
hpd.int.slopes = HDInterval::hdi(dens,credMass = 0.95,allowSplit=F)  
maxdens.slopes=round(dens$x[which.max(dens$y)],2)

R^2 = 0.98, 95% CrI = 0.8666093 - 1.0013974.
Intercept = -0.18, 95% CrI = -1.4496327 - 0.8999058.
(= Aut peak level - Pom peak level)
Effect estimate = 1.1, 95% CrI = 0.9450365 - 1.2603133.
(= slope)

Nsamp = 200
means.pomona = sample(chains.burn.df$peak.titer.overall.pomona,Nsamp,replace = F)
sds.pomona = sample(chains.burn.df$peak.titer.sd.overall.pomona,Nsamp,replace = F)
means.aut = sample(chains.burn.df$peak.titer.overall.aut,Nsamp,replace = F)
sds.aut = sample(chains.burn.df$peak.titer.sd.overall.aut,Nsamp,replace = F)


ggplot(data = data.frame(x = 0:15),aes(x=x)) +
       scale_x_continuous(breaks=0:15) +
       
       mapply(function(mean,sd){
              stat_function(fun = dnorm, args = list(mean = mean,sd = sd),aes(color="Autumnalis"),size=0.4)
       },
       mean = means.aut,
       sd = sds.aut
       ) +
       stat_function(fun = dnorm, args = list(mean = peak.titer.overall.mean.aut,sd = peak.titer.sd.overall.mean.aut),color =  brewer.pal(11,"Spectral")[1],size=1.5) +
       geom_vline(xintercept=peak.titer.overall.mean.aut,col=brewer.pal(11,"Spectral")[1],size=0.8,alpha=0.6) +
       mapply(function(mean,sd){
              stat_function(fun = dnorm,args = list(mean = mean,sd = sd),aes(color="Pomona"),size=0.4)
       },
       mean = means.pomona,
       sd = sds.pomona
       ) +
       stat_function(fun = dnorm, args = list(mean = peak.titer.overall.mean.pomona,sd = peak.titer.sd.overall.mean.pomona),color =  brewer.pal(11,"Spectral")[10],size=1.5) +
       geom_vline(xintercept=peak.titer.overall.mean.pomona,col=brewer.pal(11,"Spectral")[10],size=0.8,alpha=0.6) +
       scale_color_manual("Serovar",values = alpha(c("Pomona" = brewer.pal(11,"Spectral")[10],"Autumnalis" = brewer.pal(11,"Spectral")[1]),0.3)) +
       xlab("Peak antibody level \n(log2 dilution)") +
       ylab("Density") +
       theme_light(base_family = "Avenir Next") +
       theme(plot.title = element_text(size = 11),
             text=element_text(size=11),
             axis.text=element_text(size=10),
             axis.title.y = element_text(margin = ggplot2::margin(r=10)),
             legend.position = c(0.85,0.75),
             plot.margin = unit(c(0.5,0.75,0.5,0.5),"cm"),
             legend.background = element_rect(colour = "transparent", fill = "transparent")
       )

plot1 = ggplot(data = data.frame(x = 0:15),aes(x=x)) +
       scale_x_continuous(breaks=seq(0,15,2),limits = c(0,16)) +
       mapply(function(mean,sd){
              stat_function(fun = dnorm, args = list(mean = mean,sd = sd),aes(color="Autumnalis"),size=0.2,alpha=0.1)
       },
       mean = means.aut,
       sd = sds.aut
       ) +
       mapply(function(mean,sd){
              stat_function(fun = dnorm,args = list(mean = mean,sd = sd),aes(color="Pomona"),size=0.2,alpha=0.1)
       },
       mean = means.pomona,
       sd = sds.pomona
       ) +
       stat_function(fun = dnorm, args = list(mean = peak.titer.overall.mean.aut,sd = peak.titer.sd.overall.mean.aut),color =  brewer.pal(11,"Spectral")[1],size=1.5) +
       stat_function(fun = dnorm, args = list(mean = peak.titer.overall.mean.pomona,sd = peak.titer.sd.overall.mean.pomona),color =  brewer.pal(11,"Spectral")[10],size=1.5) +
       #geom_vline(xintercept=peak.titer.overall.mean.aut,col=brewer.pal(11,"Spectral")[1],size=1,alpha=1) +
       #geom_vline(xintercept=peak.titer.overall.mean.pomona,col=brewer.pal(11,"Spectral")[10],size=1,alpha=1) +
       scale_color_manual("Serovar",values = alpha(c("Pomona" = brewer.pal(11,"Spectral")[10],"Autumnalis" = brewer.pal(11,"Spectral")[1]),0.3)) +
       xlab("Peak antibody level \n(log2 dilution)") +
       ylab("Density") +
       theme_light(base_family = "Avenir Next") +
       theme(plot.title = element_text(size = 13),
             text=element_text(size=13),
             axis.text=element_text(size=13),
             axis.title.y = element_text(margin = ggplot2::margin(r=10)),
             legend.title = element_text(size = 10),
             legend.text = element_text(size = 9),
             #legend.position = c(0.78,0.85),
             legend.position = "none",
             plot.margin = unit(c(0.5,0.75,0.5,0.5),"cm"),
             legend.background = element_rect(colour = "transparent", fill = "transparent"),
             legend.key = element_rect(fill = NA)
       ) +
       labs(tag = "(A)")

Individual level means:

cor.plot.individual = ggplot(ind.means.2,aes(x = peak.titer.pomona, y = peak.titer.aut)) +
       geom_point(alpha = 1,size = 0.8,col = brewer.pal(n = 11,"Spectral")[10]) +
       theme_light(base_family = "Avenir Next") +
       scale_x_continuous(breaks = seq(0,15,2)) +
       scale_y_continuous(breaks = seq(0,15,2)) +
       theme(plot.title  =  element_text(size  = 13),
             text = element_text(size = 13),
             axis.text = element_text(size = 13),
             axis.title.y  =  element_text(margin  =  ggplot2::margin(r = 10)),
             plot.margin = unit(c(0.5,0.75,0.5,0.5),"cm")) +
       xlab("Peak antibody level (log2 dilution) \n posterior individual means \n (Pomona)") +
       ylab("Peak antibody level (log2 dilution) \n posterior individual means \n (Autumnalis)") +
       labs(tag = "(A)")

cor.plot.individual

joint.dens = chains.burn.df[,c("peak.titer.overall.pomona","peak.titer.overall.aut")]
joint.dens$dens = get_density(chains.burn.df$peak.titer.overall.pomona,chains.burn.df$peak.titer.overall.aut,n = 80)


joint.plot.peak.correlation = ggplot(joint.dens,aes(x = peak.titer.overall.pomona, y = peak.titer.overall.aut,color=dens)) +
       geom_point(alpha = 0.4,size = 0.5) +
       scale_colour_gradientn(colors = rev(brewer.pal(n = 6,"Spectral")),name="Density") +
       theme_light(base_family = "Avenir Next") +
       theme(plot.title  =  element_text(size  = 13),
             text = element_text(size = 13),
             axis.text = element_text(size = 13),
             axis.title.y  =  element_text(margin  =  ggplot2::margin(r = 10)),
             plot.margin = unit(c(0.5,0.75,0.5,0.5),"cm")) +
       xlab("Peak antibody level (log2 dilution) \n  posterior overall mean \n (Pomona)") +
       ylab("Peak antibody level (log2 dilution) \n  posterior overall mean \n (Autumnalis)") +
       labs(tag = "(B)")


joint.plot.peak.correlation

Combined plot peak titer correlations for manuscript

comb.plot.correlation = cor.plot.individual + joint.plot.peak.correlation


comb.plot.correlation

3.1.2 Decay rate

Nsamp = 200
means.pomona = sample(chains.burn.df$decay.rate.overall.pomona,Nsamp,replace = F)
sds.pomona = sample(chains.burn.df$decay.rate.sd.overall.pomona,Nsamp,replace = F)
means.aut = sample(chains.burn.df$decay.rate.overall.aut,Nsamp,replace = F)
sds.aut = sample(chains.burn.df$decay.rate.sd.overall.aut,Nsamp,replace = F)


ggplot(data = data.frame(x = seq(0,0.0016,0.0001)),aes(x=x)) +
       #scale_x_continuous(breaks=0:15) +
       
       mapply(function(mean,sd){
              stat_function(fun = dnorm, args = list(mean = mean,sd = sd),aes(color="Autumnalis"),size=0.4)
       },
       mean = means.aut,
       sd = sds.aut
       ) +
       stat_function(fun = dnorm, args = list(mean = decay.rate.overall.mean.aut,sd = decay.rate.sd.overall.mean.aut),color =  brewer.pal(11,"Spectral")[1],size=1.5) +
       geom_vline(xintercept=decay.rate.overall.mean.aut,col=brewer.pal(11,"Spectral")[1],size=0.8,alpha=0.6) +
       mapply(function(mean,sd){
              stat_function(fun = dnorm,args = list(mean = mean,sd = sd),aes(color="Pomona"),size=0.4)
       },
       mean = means.pomona,
       sd = sds.pomona
       ) +
       stat_function(fun = dnorm, args = list(mean = decay.rate.overall.mean.pomona,sd = decay.rate.sd.overall.mean.pomona),color =  brewer.pal(11,"Spectral")[10],size=1.5) +
       geom_vline(xintercept=decay.rate.overall.mean.pomona,col=brewer.pal(11,"Spectral")[10],size=0.8,alpha=0.6) +
       scale_color_manual("Serovar",values = alpha(c("Pomona" = brewer.pal(11,"Spectral")[10],"Autumnalis" = brewer.pal(11,"Spectral")[1]),0.3)) +
       xlab("Decay rate (1/day)") +
       ylab("Density") +
       theme_light(base_family = "Avenir Next") +
       theme(plot.title = element_text(size = 11),
             text=element_text(size=11),
             axis.text=element_text(size=10),
             axis.title.y = element_text(margin = ggplot2::margin(r=10)),
             legend.position = c(0.85,0.75),
             plot.margin = unit(c(0.5,0.75,0.5,0.5),"cm"),
             legend.background = element_rect(colour = "transparent", fill = "transparent")
       )

plot2 = ggplot(data = data.frame(x = seq(0,0.0017,0.0001)),aes(x=x)) +
       #scale_x_continuous(breaks=0:15) +
       
       mapply(function(mean,sd){
              stat_function(fun = dnorm, args = list(mean = mean,sd = sd),aes(color="Autumnalis"),size=0.2,alpha=0.1)
       },
       mean = means.aut,
       sd = sds.aut
       ) +
       
       #geom_vline(xintercept=decay.rate.overall.mean.aut,col=brewer.pal(11,"Spectral")[1],size=0.8,alpha=0.6) +
       mapply(function(mean,sd){
              stat_function(fun = dnorm,args = list(mean = mean,sd = sd),aes(color="Pomona"),size=0.2,alpha=0.1)
       },
       mean = means.pomona,
       sd = sds.pomona
       ) +
       stat_function(fun = dnorm, args = list(mean = decay.rate.overall.mean.aut,sd = decay.rate.sd.overall.mean.aut),color =  brewer.pal(11,"Spectral")[1],size=1.5) +
       stat_function(fun = dnorm, args = list(mean = decay.rate.overall.mean.pomona,sd = decay.rate.sd.overall.mean.pomona),color =  brewer.pal(11,"Spectral")[10],size=1.5) +
       #geom_vline(xintercept=decay.rate.overall.mean.pomona,col=brewer.pal(11,"Spectral")[10],size=0.8,alpha=0.6) +
       scale_color_manual("Serovar",values = alpha(c("Pomona" = brewer.pal(11,"Spectral")[10],"Autumnalis" = brewer.pal(11,"Spectral")[1]),0.3)) +
       scale_x_continuous(breaks = c(0,0.00075,0.0015),labels = c("0","0.00075","0.0015")) +
       xlab("Decay rate \n(1/day)") +
       ylab("Density") +
       theme_light(base_family = "Avenir Next") +
       theme(plot.title = element_text(size = 13),
             text=element_text(size=13),
             axis.text=element_text(size=13),
             axis.title.y = element_text(margin = ggplot2::margin(r=10)),
             legend.title = element_text(size = 12),
             legend.text = element_text(size = 11),
             #legend.position = "none",
             legend.position = c(0.75,0.85),
             plot.margin = unit(c(0.5,0.75,0.5,0.5),"cm"),
             legend.background = element_rect(colour = "transparent", fill = "transparent"),
             legend.key = element_rect(fill = NA)
       ) +
       labs(tag = "(B)")

3.1.3 Fitted function

ggplot() +
       #geom_line(data=fit.dat.cloud.aut, aes(x = time, y = titer, group = samp), col = brewer.pal(11,"Spectral")[1],alpha=0.5,size=0.3) +
       geom_line(data=fit.dat.aut,aes(x = time, y = titer,col="Autumnalis"),size=1.5) +
       #geom_line(data=fit.dat.cloud.pomona, aes(x = time, y = titer, group = samp), col = brewer.pal(11,"Spectral")[10],alpha=0.5,size=0.3) +
       geom_line(data=fit.dat.pomona,aes(x = time, y = titer,col="Pomona"),size=1.5) +
       scale_color_manual("Serovar",values = c("Pomona" = brewer.pal(11,"Spectral")[10],"Autumnalis" = brewer.pal(11,"Spectral")[1])) +
       scale_y_continuous(breaks = seq(0,15,2)) +
       theme_light(base_family = "Avenir Next") +
       theme(plot.title  =  element_text(size  = 12),
             text = element_text(size = 11),
             axis.text = element_text(size = 11),
             axis.title.y  =  element_text(margin  =  ggplot2::margin(r = 10)),
             #legend.position  =  "none",
             plot.margin = unit(c(0.5,0.75,0.5,0.5),"cm"))+
       xlab("Time since peak antibody level (days)") +
       ylab("Antibody level (log2 dilution)")

ggplot() +
       geom_line(data=fit.dat.cloud.aut, aes(x = time, y = titer, group = samp, col = "Autumnalis"),alpha=0.5,size=0.3) +
       #geom_line(data=fit.dat.aut,aes(x = time, y = titer,col="Autumnalis"),size=1.5) +
       geom_line(data=fit.dat.cloud.pomona, aes(x = time, y = titer, group = samp, col = "Pomona"),alpha=0.5,size=0.3) +
       #geom_line(data=fit.dat.pomona,aes(x = time, y = titer,col="Pomona"),size=1.5) +
       scale_color_manual("Serovar",values = c("Pomona" = brewer.pal(11,"Spectral")[10],"Autumnalis" = brewer.pal(11,"Spectral")[1])) +
       scale_y_continuous(breaks = seq(0,15,2)) +
       theme_light(base_family = "Avenir Next") +
       theme(plot.title  =  element_text(size  = 12),
             text = element_text(size = 11),
             axis.text = element_text(size = 11),
             axis.title.y  =  element_text(margin  =  ggplot2::margin(r = 10)),
             #legend.position  =  "none",
             plot.margin = unit(c(0.5,0.75,0.5,0.5),"cm"))+
       xlab("Time since peak antibody level (days)") +
       ylab("Antibody level (log2 dilution)")

plot3 = ggplot() +
       geom_line(data=fit.dat.cloud.aut, aes(x = time, y = titer, group = samp, col = "Autumnalis"),alpha=0.1,size=0.2) +
       geom_line(data=fit.dat.cloud.pomona, aes(x = time, y = titer, group = samp, col = "Pomona"),alpha=0.1,size=0.2) +
       geom_line(data=fit.dat.aut,aes(x = time, y = titer,col="Autumnalis"),size=1.5) +
       geom_line(data=fit.dat.pomona,aes(x = time, y = titer,col="Pomona"),size=1.5) +
       scale_color_manual("Serovar",values = c("Pomona" = brewer.pal(11,"Spectral")[10],"Autumnalis" = brewer.pal(11,"Spectral")[1])) +
       scale_y_continuous(breaks = seq(0,15,2)) +
       theme_light(base_family = "Avenir Next") +
       theme(plot.title  =  element_text(size  = 12),
             text = element_text(size = 11),
             axis.text = element_text(size = 11),
             axis.title.y  =  element_text(margin  =  ggplot2::margin(r = 10)),
             legend.position  =  c(0.85,0.75),
             plot.margin = unit(c(0.5,0.75,0.5,0.5),"cm"))+
       xlab("Time since peak antibody level (days)") +
       ylab("Antibody level (log2 dilution)")
labs(tag = "(C)")
## $tag
## [1] "(C)"
## 
## attr(,"class")
## [1] "labels"

3.2 Combined figures peak antibody level, decay rate, fitted functions

plot1 + plot2 + plot3 + 
       plot_layout(widths = c(1,1,2))

plot1 + plot2

joint.plot.peak.decay

comb.plot = plot1 + plot2 + joint.plot.peak.decay +
       plot_layout(widths = c(4,4,4))


comb.plot

3.3 Combined figure function comparison and fitted Pom and Aut

# import posterior estimates for the three functions

all.fun.post.overall = readRDS("Function_comparison_post_overall.RDS")

fit.dat.single = linear.fun(peak.titer = all.fun.post.overall$peak.titer.mean[1], slope = -all.fun.post.overall$decay.mean[1], time = 0:4000)
fit.dat.single = data.frame(titer = fit.dat.single, time = 0:4000)
fit.dat.single$model = "Single exp"
fit.dat.single = fit.dat.single[-which(fit.dat.single$titer<0),]


fit.dat.double = exp.fun(start.titer = all.fun.post.overall$peak.titer.mean[2], rate = -all.fun.post.overall$decay.mean[2], time = 0:4000)

fit.dat.double = data.frame(titer = fit.dat.double, time = 0:4000)

fit.dat.double$model = "Double exp"


fit.dat.double.aut = exp.fun(start.titer = all.fun.post.overall$peak.titer.aut.mean[2], rate = -all.fun.post.overall$decay.aut.mean[2], time = 0:4000)

fit.dat.double.aut = data.frame(titer = fit.dat.double.aut, time = 0:4000)

fit.dat.double.aut$model = "Double exp (Autumnalis)"



fit.dat.power = power.fun(peak.titer = all.fun.post.overall$peak.titer.mean[3], shape = all.fun.post.overall$shape.mean[3],scale = all.fun.post.overall$scale.mean[3], time = 0:4000)

fit.dat.power = data.frame(titer = fit.dat.power, time = 0:4000)

fit.dat.power$model = "Power"


fit.dat = rbind(fit.dat.single,fit.dat.double,fit.dat.power)

fit.dat$model = factor(fit.dat$model,levels = c("Single exp","Double exp","Power"))


plot.1.functions = ggplot(data=fit.dat,aes(x = time, y = titer,color=model,group=model)) +
       geom_line(size=1.2) +
       scale_color_manual("Model",values  =  brewer.pal(4,"Spectral"),labels = c("Single exponential","Double exponential","Power")) +
       scale_y_continuous(limits = c(0,8),breaks = 0:8) +
       theme_light(base_family = "Avenir Next") +
       theme(plot.title = element_text(size = 13),
             text=element_text(size=13),
             axis.text=element_text(size=13),
             axis.title.y = element_text(margin = ggplot2::margin(r=10)),
             plot.margin = unit(c(0.5,0.75,0.5,0.5),"cm"),
             legend.position = c(0.65,0.75),
             legend.background = element_rect(colour = "transparent", fill = "transparent"),
             legend.key = element_rect(colour = "transparent", fill = "transparent")
       ) +
       xlab("Time since peak \nantibody level (days)") +
       ylab("Antibody level (log2 dilution)") +
       labs(tag="(A)")



plot2.with.aut = ggplot() +
       #geom_line(data = observed.data.for.fitting,aes(x = time.since.peak,y = titer.pomona,col = id,group = id),alpha = 0.2,size = 0.2,color=brewer.pal(11,"Spectral")[10]) +
       geom_point(data = observed.data.for.fitting,aes(x = time.since.peak,y = titer.pomona-0.1,col = id,group = id),size=1,alpha = 0.4,color=brewer.pal(11,"Spectral")[10]) +
       #geom_line(data = observed.data.for.fitting,aes(x = time.since.peak,y = titer.aut,col = id,group = id),alpha = 0.2,size = 0.2,color=brewer.pal(11,"Spectral")[1]) +
       geom_point(data = observed.data.for.fitting,aes(x = time.since.peak,y = titer.aut+0.1,col = id,group = id),size=1,alpha = 0.4,color=brewer.pal(11,"Spectral")[1]) +
       geom_line(data=fit.dat.double,aes(x = time, y = titer,col="Pomona"),size=1.6) +
       geom_line(data=fit.dat.double.aut,aes(x = time, y = titer,col="Autumnalis"),size=1.6) +
       #scale_color_gradientn(colours  =  brewer.pal(4,"Spectral")) +
       scale_color_manual("Serovar",values = alpha(c("Pomona" = brewer.pal(11,"Spectral")[10],"Autumnalis" = brewer.pal(11,"Spectral")[1]),1)) +
       scale_y_continuous(limits = c(0,12),breaks = 0:12) +
       theme_light(base_family = "Avenir Next") +
       theme(plot.title = element_text(size = 13),
             text=element_text(size=13),
             axis.text=element_text(size=13),
             axis.title.y = element_text(margin = ggplot2::margin(r=10)),
             plot.margin = unit(c(0.5,0.75,0.5,0.5),"cm"),
             legend.position = c(0.7,0.8),
             legend.background = element_rect(colour = "transparent", fill = "transparent"),
             legend.key = element_rect(colour = "transparent", fill = "transparent")
       ) +
       #ggtitle("Double exponential") +
       xlab("Time since peak \nantibody level (days)") +
       ylab("Antibody level (log2 dilution)") +
       labs(tag = "(B)")


plotA = plot.1.functions + plot2.with.aut
plotA

# dataframe to store estimated parameters

model.outputs = data.frame(id = 1:N.inds,
                           pittag = unique(observed.data.for.fitting$Pittag),
                           toi.mid.interval = round(neg.intervals[1:N.inds]/2),
                           toi.estimated.mean = NA,
                           toi.estimated.median = NA,
                           toi.estimated.maxdens = NA,
                           toi.estimated.mean.95ci.low = NA,
                           toi.estimated.mean.95ci.high = NA,
                           toi.estimated.maxdens.95hdi.low = NA,
                           toi.estimated.maxdens.95hdi.high = NA,
                           toi.information.gained.95cri.perc = NA,
                           toi.information.gained.80cri.perc = NA,
                           toi.information.gained.50cri.perc = NA,
                           kl.divergence = NA,
                           peak.titer.estimated.mean.pomona = NA,
                           peak.titer.estimated.median.pomona = NA,
                           peak.titer.estimated.maxdens.pomona = NA,
                           peak.titer.estimated.mean.95ci.low.pomona = NA,
                           peak.titer.estimated.mean.95ci.high.pomona = NA,
                           peak.titer.estimated.maxdens.95hdi.low.pomona = NA,
                           peak.titer.estimated.maxdens.95hdi.high.pomona = NA,
                           decay.rate.estimated.mean.pomona = NA,
                           decay.rate.estimated.median.pomona = NA,
                           decay.rate.estimated.maxdens.pomona = NA,
                           decay.rate.estimated.mean.95ci.low.pomona = NA,
                           decay.rate.estimated.mean.95ci.high.pomona = NA,
                           decay.rate.estimated.maxdens.95hdi.low.pomona = NA,
                           decay.rate.estimated.maxdens.95hdi.high.pomona = NA,
                           peak.titer.estimated.mean.aut = NA,
                           peak.titer.estimated.median.aut = NA,
                           peak.titer.estimated.maxdens.aut = NA,
                           peak.titer.estimated.mean.95ci.low.aut = NA,
                           peak.titer.estimated.mean.95ci.high.aut = NA,
                           peak.titer.estimated.maxdens.95hdi.low.aut = NA,
                           peak.titer.estimated.maxdens.95hdi.high.aut = NA,
                           decay.rate.estimated.mean.aut = NA,
                           decay.rate.estimated.median.aut = NA,
                           decay.rate.estimated.maxdens.aut = NA,
                           decay.rate.estimated.mean.95ci.low.aut = NA,
                           decay.rate.estimated.mean.95ci.high.aut = NA,
                           decay.rate.estimated.maxdens.95hdi.low.aut = NA,
                           decay.rate.estimated.maxdens.95hdi.high.aut = NA
)




# matrix for plotting individual posteriors of time of infection
# nrow = number of iterations to store
theta.all = matrix(data = NA, ncol = N.inds, nrow = 6000)  



# print figures?  

plot.figs = F

teller = 1
for(i in 1:N.inds){
       
       
       
       chains.current.individual.df = chains.burn.df[,c(paste0("peak.titer.pomona.",i),paste0("peak.titer.aut.",i),paste0("decay.rate.pomona.",i),paste0("decay.rate.aut.",i),paste0("toi.",i),"iteration","chain")]
       
       colnames(chains.current.individual.df) = c("peak.titer.pomona","peak.titer.aut","decay.rate.pomona","decay.rate.aut","toi","iteration","chain")
       
       theta.all[,i] = chains.current.individual.df[which(chains.current.individual.df$iteration %in% (max(chains.current.individual.df$iteration)-999):max(chains.current.individual.df$iteration)),"toi"]
       
       model.outputs[teller,"toi.estimated.mean"] = round(mean(chains.current.individual.df[,"toi"]))
       model.outputs[teller,"peak.titer.estimated.mean.pomona"] = round(mean(chains.current.individual.df[,"peak.titer.pomona"]),1)
       model.outputs[teller,"decay.rate.estimated.mean.pomona"] = round(mean(chains.current.individual.df[,"decay.rate.pomona"]),6)
       model.outputs[teller,"peak.titer.estimated.mean.aut"] = round(mean(chains.current.individual.df[,"peak.titer.aut"]),1)
       model.outputs[teller,"decay.rate.estimated.mean.aut"] = round(mean(chains.current.individual.df[,"decay.rate.aut"]),6)
       
       model.outputs[teller,"toi.estimated.median"] = median(round(chains.current.individual.df[,"toi"]))
       model.outputs[teller,"peak.titer.estimated.median.pomona"] = median(round(chains.current.individual.df[,"peak.titer.pomona"],1))
       model.outputs[teller,"decay.rate.estimated.median.pomona"] = median(round(chains.current.individual.df[,"decay.rate.pomona"],6))
       model.outputs[teller,"peak.titer.estimated.median.aut"] = median(round(chains.current.individual.df[,"peak.titer.aut"],1))
       model.outputs[teller,"decay.rate.estimated.median.aut"] = median(round(chains.current.individual.df[,"decay.rate.aut"],6))
       
       
       
       dens = density(chains.current.individual.df[,"toi"],bw = 5,from = neg.intervals[i],to=0)
       model.outputs[teller,"toi.estimated.maxdens"] = round(dens$x[which.max(dens$y)])
       hpd.int.toi = HDInterval::hdi(dens,credMass = 0.95,allowSplit=F)    # highest posterior density credible intervals
       # quantile(chains.current.individual.df[which(chains.current.individual.df$iteration > burn.in),2],c(0.025,0.975))
       model.outputs[teller,"toi.estimated.maxdens.95hdi.low"] = round(hpd.int.toi[1])
       model.outputs[teller,"toi.estimated.maxdens.95hdi.high"] = round(hpd.int.toi[2])
       
       model.outputs[teller,"toi.information.gained.95cri.perc"] = 1-abs((as.numeric(hpd.int.toi[2]-hpd.int.toi[1])/neg.intervals[i]))
       
       hpd.int.toi.80 = HDInterval::hdi(dens,credMass = 0.80,allowSplit=F)    # highest posterior density credible intervals
       model.outputs[teller,"toi.information.gained.80cri.perc"] = 1-abs((as.numeric(hpd.int.toi.80[2]-hpd.int.toi.80[1])/neg.intervals[i]))
       
       hpd.int.toi.50 = HDInterval::hdi(dens,credMass = 0.50,allowSplit=F)    # highest posterior density credible intervals
       model.outputs[teller,"toi.information.gained.50cri.perc"] = 1-abs((as.numeric(hpd.int.toi.50[2]-hpd.int.toi.50[1])/neg.intervals[i]))
       
       ### Relative entropy / Kullback-Leibler divergence
       prior.values = neg.intervals[i]:0
       posterior.values = chains.current.individual.df[,"toi"]
       model.outputs[teller,"kl.divergence"] = kl.divergence(prior.values,posterior.values)
       
       
       
       
       
       mean.eti.toi = mean.eti(chains.current.individual.df[,"toi"])
       model.outputs[teller,"toi.estimated.mean.95ci.low"] = round(mean.eti.toi[1])
       model.outputs[teller,"toi.estimated.mean.95ci.high"] = round(mean.eti.toi[2])
       
       
       
       dens = density(chains.current.individual.df[,"peak.titer.pomona"])
       model.outputs[teller,"peak.titer.estimated.maxdens.pomona"] = round(dens$x[which.max(dens$y)],1)
       hpd.int.peak.titer.pomona = HDInterval::hdi(dens,allowSplit=F)
       
       mean.eti.peak.titer.pomona = mean.eti(chains.current.individual.df[,"peak.titer.pomona"])
       model.outputs[teller,"peak.titer.estimated.maxdens.95hdi.low.pomona"] = round(hpd.int.peak.titer.pomona[1],1)
       model.outputs[teller,"peak.titer.estimated.maxdens.95hdi.high.pomona"] = round(hpd.int.peak.titer.pomona[2],1)
       model.outputs[teller,"peak.titer.estimated.mean.95ci.low.pomona"] = round(mean.eti.peak.titer.pomona[1],1)
       model.outputs[teller,"peak.titer.estimated.mean.95ci.high.pomona"] = round(mean.eti.peak.titer.pomona[2],1)
       
       
       dens = density(chains.current.individual.df[,"peak.titer.aut"])
       model.outputs[teller,"peak.titer.estimated.maxdens.aut"] = round(dens$x[which.max(dens$y)],1)
       hpd.int.peak.titer.aut = HDInterval::hdi(dens,allowSplit=F)
       
       mean.eti.peak.titer.aut = mean.eti(chains.current.individual.df[,"peak.titer.aut"])
       model.outputs[teller,"peak.titer.estimated.maxdens.95hdi.low.aut"] = round(hpd.int.peak.titer.aut[1],1)
       model.outputs[teller,"peak.titer.estimated.maxdens.95hdi.high.aut"] = round(hpd.int.peak.titer.aut[2],1)
       model.outputs[teller,"peak.titer.estimated.mean.95ci.low.aut"] = round(mean.eti.peak.titer.aut[1],1)
       model.outputs[teller,"peak.titer.estimated.mean.95ci.high.aut"] = round(mean.eti.peak.titer.aut[2],1)
       
       
       
       dens = density(chains.current.individual.df[,"decay.rate.pomona"])
       model.outputs[teller,"decay.rate.estimated.maxdens.pomona"] = round(dens$x[which.max(dens$y)],6)
       hpd.int.decay.rate.pomona = HDInterval::hdi(dens,allowSplit=F)
       
       mean.eti.decay.rate.pomona = mean.eti(chains.current.individual.df[,"decay.rate.pomona"])
       model.outputs[teller,"decay.rate.estimated.maxdens.95hdi.low.pomona"] = round(hpd.int.decay.rate.pomona[1],6)
       model.outputs[teller,"decay.rate.estimated.maxdens.95hdi.high.pomona"] = round(hpd.int.decay.rate.pomona[2],6)
       model.outputs[teller,"decay.rate.estimated.mean.95ci.low.pomona"] = round(mean.eti.decay.rate.pomona[1],6)
       model.outputs[teller,"decay.rate.estimated.mean.95ci.high.pomona"] = round(mean.eti.decay.rate.pomona[2],6)
       
       
       dens = density(chains.current.individual.df[,"decay.rate.aut"])
       model.outputs[teller,"decay.rate.estimated.maxdens.aut"] = round(dens$x[which.max(dens$y)],6)
       hpd.int.decay.rate.aut = HDInterval::hdi(dens,allowSplit=F)
       
       mean.eti.decay.rate.aut = mean.eti(chains.current.individual.df[,"decay.rate.aut"])
       model.outputs[teller,"decay.rate.estimated.maxdens.95hdi.low.aut"] = round(hpd.int.decay.rate.aut[1],6)
       model.outputs[teller,"decay.rate.estimated.maxdens.95hdi.high.aut"] = round(hpd.int.decay.rate.aut[2],6)
       model.outputs[teller,"decay.rate.estimated.mean.95ci.low.aut"] = round(mean.eti.decay.rate.aut[1],6)
       model.outputs[teller,"decay.rate.estimated.mean.95ci.high.aut"] = round(mean.eti.decay.rate.aut[2],6)
       
       
       
       
       
       plot1 = ggplot(data=chains.current.individual.df,aes(x=toi)) +
              geom_density(color=brewer.pal(11,"Spectral")[10],fill=brewer.pal(11,"Spectral")[10],alpha=0.6,size=1) +
              geom_vline(xintercept = model.outputs[teller,"toi.estimated.maxdens"],col="black",size=0.8,alpha=0.6) +
              geom_vline(xintercept = model.outputs[teller,"toi.estimated.maxdens.95hdi.low"],col="black",size=0.8,linetype="dotted",alpha=0.6) +
              geom_vline(xintercept = model.outputs[teller,"toi.estimated.maxdens.95hdi.high"],col="black",size=0.8,linetype="dotted",alpha=0.6) +
              theme_light(base_family = "Avenir Next") +
              ggtitle(paste0("Individual ",model.outputs[i,"pittag"])) +
              xlab("\u03B8 (days)") +
              ylab("Posterior density") +
              theme(plot.title = element_text(size = 11),
                    text=element_text(size=11),
                    axis.text=element_text(size=10),
                    axis.title.y = element_text(margin = ggplot2::margin(r=10)),
                    plot.margin = unit(c(0.5,0.75,0.5,0.5),"cm"),
                    legend.position = "none"
              )
       
       
       
       #plot2 = plot.MCMC.chains(input.data = chains.current.individual.df, column.to.plot = which(colnames(chains.current.individual.df)=="toi"), y.axis.label = "Theta",thinning = 20, title = paste0("Individual ",model.outputs[i,"pittag"]))
       
       if(plot.figs==T) print(plot1)
       
       
       
       
       plot1 = ggplot(data = data.frame(x = 0:15),aes(x=x)) +
              stat_function(fun = dnorm, args = list(mean = model.outputs[teller,"peak.titer.estimated.maxdens.pomona"],sd = sd(chains.current.individual.df$peak.titer.pomona)),aes(col="Pomona"),size=1.5) +
              geom_vline(xintercept = model.outputs[teller,"peak.titer.estimated.maxdens.pomona"],col=brewer.pal(11,"Spectral")[10]) +
              stat_function(fun = dnorm, args = list(mean = model.outputs[teller,"peak.titer.estimated.maxdens.aut"],sd = sd(chains.current.individual.df$peak.titer.aut)),aes(col="Autumnalis"),size=1.5) +
              geom_vline(xintercept = model.outputs[teller,"peak.titer.estimated.maxdens.aut"],col=brewer.pal(11,"Spectral")[1]) +
              scale_color_manual("Serovar",values = c("Pomona" = brewer.pal(11,"Spectral")[10],"Autumnalis" = brewer.pal(11,"Spectral")[1])) +
              theme_light(base_family = "Avenir Next") +
              ggtitle(paste0("Individual ",model.outputs[i,"pittag"])) +
              xlab("Peak antibody level (log2 dilution)") +
              ylab("Posterior density") +
              theme(plot.title = element_text(size = 11),
                    text=element_text(size=11),
                    axis.text=element_text(size=10),
                    axis.title.y = element_text(margin = ggplot2::margin(r=10)),
                    plot.margin = unit(c(0.5,0.75,0.5,0.5),"cm")
              )
       
       
       
       
       
       
       plot2 = ggplot(data = data.frame(x = seq(-0.00015,0.002,0.0001)),aes(x=x)) +
              stat_function(fun = dnorm, args = list(mean = model.outputs[teller,"decay.rate.estimated.maxdens.pomona"],sd = sd(chains.current.individual.df$decay.rate.pomona)),aes(col="Pomona"),size=1.5) +
              geom_vline(xintercept = model.outputs[teller,"decay.rate.estimated.maxdens.pomona"],col=brewer.pal(11,"Spectral")[10]) +
              stat_function(fun = dnorm, args = list(mean = model.outputs[teller,"decay.rate.estimated.maxdens.aut"],sd = sd(chains.current.individual.df$decay.rate.aut)),aes(col="Autumnalis"),size=1.5) +
              geom_vline(xintercept = model.outputs[teller,"decay.rate.estimated.maxdens.aut"],col=brewer.pal(11,"Spectral")[1]) +
              scale_color_manual("Serovar",values = c("Pomona" = brewer.pal(11,"Spectral")[10],"Autumnalis" = brewer.pal(11,"Spectral")[1])) +
              ggtitle(paste0("Individual ",model.outputs[i,"pittag"])) +
              xlab("Decay rate (1/day)") +
              ylab("Posterior density") +
              theme_light(base_family = "Avenir Next") +
              theme(plot.title = element_text(size = 11),
                    text=element_text(size=11),
                    axis.text=element_text(size=10),
                    axis.title.y = element_text(margin = ggplot2::margin(r=10)),
                    plot.margin = unit(c(0.5,0.75,0.5,0.5),"cm")
              )
       
       
       
       if(plot.figs==T) print(plot1)
       if(plot.figs==T) print(plot2)
       
       
       
       
       
       
       # pomona
       # sample N values from posterior distribution to get sense of error
       
       N.samp = 200
       
       
       set.seed(1234);peak.titer.samp = sample(chains.current.individual.df$peak.titer.pomona[which(chains.current.individual.df$peak.titer.pomona > hpd.int.peak.titer.pomona[1] & chains.current.individual.df$peak.titer.pomona < hpd.int.peak.titer.pomona[2])], size = N.samp, replace = T)
       
       set.seed(1234);decay.rate.samp = sample(chains.current.individual.df$decay.rate.pomona[which(chains.current.individual.df$decay.rate.pomona > hpd.int.decay.rate.pomona[1] & chains.current.individual.df$decay.rate.pomona < hpd.int.decay.rate.pomona[2])], size = N.samp, replace = T)
       
       plot.times = 0:max(observed.data.for.fitting$time.since.peak[which(observed.data.for.fitting$id==i)])
       
       fit.dat.cloud.pomona = data.frame(time = rep(plot.times,N.samp), samp = rep(1:N.samp,each = length(plot.times)), titer = NA)
       
       for(ii in 1:N.samp){
              
              fit.dat.cloud.pomona$titer[which(fit.dat.cloud.pomona$samp == ii)] = exp.fun(start.titer = peak.titer.samp[ii], rate = -decay.rate.samp[ii], time = plot.times)
              
       }
       
       
       fit.dat.pomona = exp.fun(start.titer = model.outputs[teller,"peak.titer.estimated.mean.pomona"], rate = -model.outputs[teller,"decay.rate.estimated.mean.pomona"], time = 0:max(observed.data.for.fitting$time.since.peak[which(observed.data.for.fitting$id==i)]))
       
       fit.dat.pomona = data.frame(titer = fit.dat.pomona, time = 0:max(observed.data.for.fitting$time.since.peak[which(observed.data.for.fitting$id==i)]))
       
       
       plot3 = ggplot() +
              #geom_line(data = observed.data.for.fitting[which(observed.data.for.fitting$id==i),],aes(x = time.since.peak,y = titer),alpha = 0.8,size = 1.5,color="#F46D43") +
              geom_line(data=fit.dat.cloud.pomona, aes(x = time, y = titer, group = samp), col = brewer.pal(11,"Spectral")[10],alpha=0.2,size=0.4) +
              geom_line(data=fit.dat.pomona,aes(x = time, y = titer),col=brewer.pal(11,"Spectral")[10],size=1.5,alpha=1) +
              geom_point(data = observed.data.for.fitting[which(observed.data.for.fitting$id==i),],aes(x = time.since.peak,y = titer.pomona),size=3,alpha = 1,color="black") +
              #scale_color_gradientn(colours  =  brewer.pal(11,"Spectral")) +
              scale_y_continuous(limits = c(0,13),breaks=0:13) +
              ggtitle(paste0("Individual ",model.outputs[i,"pittag"])) +
              theme_light(base_family = "Avenir Next") +
              theme(plot.title = element_text(size = 11),
                    text=element_text(size=11),
                    axis.text=element_text(size=10),
                    axis.title.y = element_text(margin = ggplot2::margin(r=10)),
                    plot.margin = unit(c(0.5,0.75,0.5,0.5),"cm")
              ) +
              xlab("Time since peak antibody level (days)") +
              ylab("Antibody level (Pomona) (log2 dilution)")
       
       
       if(plot.figs==T) print(plot3)
       
       
       # aut
       # sample N values from posterior distribution to get sense of error
       
       N.samp = 200
       
       
       set.seed(1234);peak.titer.samp = sample(chains.current.individual.df$peak.titer.aut[which(chains.current.individual.df$peak.titer.aut > hpd.int.peak.titer.aut[1] & chains.current.individual.df$peak.titer.aut < hpd.int.peak.titer.aut[2])], size = N.samp, replace = T)
       
       set.seed(1234);decay.rate.samp = sample(chains.current.individual.df$decay.rate.aut[which(chains.current.individual.df$decay.rate.aut > hpd.int.decay.rate.aut[1] & chains.current.individual.df$decay.rate.aut < hpd.int.decay.rate.aut[2])], size = N.samp, replace = T)
       
       plot.times = 0:max(observed.data.for.fitting$time.since.peak[which(observed.data.for.fitting$id==i)])
       
       fit.dat.cloud.aut = data.frame(time = rep(plot.times,N.samp), samp = rep(1:N.samp,each = length(plot.times)), titer = NA)
       
       for(ii in 1:N.samp){
              
              fit.dat.cloud.aut$titer[which(fit.dat.cloud.aut$samp == ii)] = exp.fun(start.titer = peak.titer.samp[ii], rate = -decay.rate.samp[ii], time = plot.times)
              
       }
       
       
       if(is.finite(observed.data.for.fitting$titer.aut[which(observed.data.for.fitting$id==i)][1])){
              fit.dat.aut = exp.fun(start.titer = model.outputs[teller,"peak.titer.estimated.mean.aut"], rate = -model.outputs[teller,"decay.rate.estimated.mean.aut"], time = 0:max(observed.data.for.fitting$time.since.peak[which(observed.data.for.fitting$id==i)]))
              
              fit.dat.aut = data.frame(titer = fit.dat.aut, time = 0:max(observed.data.for.fitting$time.since.peak[which(observed.data.for.fitting$id==i)]))
              
              
              plot4 = ggplot() +
                     #geom_line(data = observed.data.for.fitting[which(observed.data.for.fitting$id==i),],aes(x = time.since.peak,y = titer),alpha = 0.8,size = 1.5,color="#F46D43") +
                     geom_line(data=fit.dat.cloud.aut, aes(x = time, y = titer, group = samp), col = brewer.pal(11,"Spectral")[1],alpha=0.2,size=0.4) +
                     geom_line(data=fit.dat.aut,aes(x = time, y = titer),col=brewer.pal(11,"Spectral")[1],size=1.5,alpha=1) +
                     geom_point(data = observed.data.for.fitting[which(observed.data.for.fitting$id==i),],aes(x = time.since.peak,y = titer.aut),size=3,alpha = 1,color="black") +
                     #scale_color_gradientn(colours  =  brewer.pal(11,"Spectral")) +
                     scale_y_continuous(limits = c(0,13),breaks=0:13) +
                     ggtitle(paste0("Individual ",model.outputs[i,"pittag"])) +
                     theme_light(base_family = "Avenir Next") +
                     theme(plot.title = element_text(size = 11),
                           text=element_text(size=11),
                           axis.text=element_text(size=10),
                           axis.title.y = element_text(margin = ggplot2::margin(r=10)),
                           plot.margin = unit(c(0.5,0.75,0.5,0.5),"cm")
                     )+
                     xlab("Time since peak antibody level (days)") +
                     ylab("Antibody level (Autumnalis) (log2 dilution)")
              if(plot.figs==T) print(plot4)
       }
       
       # print(paste0("% seroconversion interval reduction: ",round(model.outputs$toi.information.gained.95cri.perc[teller],4)))
       # print(paste0("KL-divergence: ",round(model.outputs$kl.divergence[teller],4)))
       # print(paste0("Individual ",i," of ",N.inds))
       # print("----------------------------------------------")
       # print("----------------------------------------------")
       # print("----------------------------------------------")
       
       teller = teller + 1
}



3.4 Individual posteriors and chains


Posterior densities are shown after removing burn-in iterations.
Solid red line = estimated posterior maximum density
Weaker red line = estimated posterior mean



Figure for main text:

# model.outputs$pittag[which(model.outputs$toi.information.gained.95cri.perc %in% head(sort(model.outputs$toi.information.gained.95cri.perc)))]
# model.outputs$pittag[which(model.outputs$toi.information.gained.95cri.perc %in% tail(sort(model.outputs$toi.information.gained.95cri.perc)))]

# observed.data.for.fitting[which(observed.data.for.fitting$Pittag=="B6069"),]

pittag.to.plot = c("12672","B6069")



# individual 1
i = observed.data.for.fitting$id[which(observed.data.for.fitting$Pittag==pittag.to.plot[1])][1]
chains.current.individual.df = chains.burn.df[,c(paste0("peak.titer.pomona.",i),paste0("peak.titer.aut.",i),paste0("decay.rate.pomona.",i),paste0("decay.rate.aut.",i),paste0("toi.",i),"iteration","chain")]
colnames(chains.current.individual.df) = c("peak.titer.pomona","peak.titer.aut","decay.rate.pomona","decay.rate.aut","toi","iteration","chain")

cur.peak.titer.pomona = round(mean(chains.current.individual.df[,"peak.titer.pomona"]),1)
dens = density(chains.current.individual.df[,"peak.titer.pomona"])
hpd.int.peak.pomona = HDInterval::hdi(dens,credMass = 0.95,allowSplit=F)    
cur.95.peak.pomona.low = round(hpd.int.peak.pomona[1])
cur.95.peak.pomona.high = round(hpd.int.peak.pomona[2])
hpd.int.peak.pomona = HDInterval::hdi(dens,credMass = 0.5,allowSplit=F)    
cur.50.peak.pomona.low = round(hpd.int.peak.pomona[1])
cur.50.peak.pomona.high = round(hpd.int.peak.pomona[2])


cur.decay.pomona = round(mean(chains.current.individual.df[,"decay.rate.pomona"]),6)
dens = density(chains.current.individual.df[,"decay.rate.pomona"])
hpd.int.decay.pomona = HDInterval::hdi(dens,credMass = 0.95,allowSplit=F)    
cur.95.decay.pomona.low = hpd.int.decay.pomona[1]
cur.95.decay.pomona.high = hpd.int.decay.pomona[2]
hpd.int.decay.pomona = HDInterval::hdi(dens,credMass = 0.50,allowSplit=F)    
cur.50.decay.pomona.low = hpd.int.decay.pomona[1]
cur.50.decay.pomona.high = hpd.int.decay.pomona[2]

cur.peak.titer.aut = round(mean(chains.current.individual.df[,"peak.titer.aut"]),1)
dens = density(chains.current.individual.df[,"peak.titer.aut"])
hpd.int.peak.aut = HDInterval::hdi(dens,credMass = 0.95,allowSplit=F)    
cur.95.peak.aut.low = round(hpd.int.peak.aut[1])
cur.95.peak.aut.high = round(hpd.int.peak.aut[2])
hpd.int.peak.aut = HDInterval::hdi(dens,credMass = 0.50,allowSplit=F)    
cur.50.peak.aut.low = round(hpd.int.peak.aut[1])
cur.50.peak.aut.high = round(hpd.int.peak.aut[2])


cur.decay.aut = round(mean(chains.current.individual.df[,"decay.rate.aut"]),6)
dens = density(chains.current.individual.df[,"decay.rate.aut"])
hpd.int.decay.aut = HDInterval::hdi(dens,credMass = 0.95,allowSplit=F)    
cur.95.decay.aut.low = hpd.int.decay.aut[1]
cur.95.decay.aut.high = hpd.int.decay.aut[2]
hpd.int.decay.aut = HDInterval::hdi(dens,credMass = 0.50,allowSplit=F)    
cur.50.decay.aut.low = hpd.int.decay.aut[1]
cur.50.decay.aut.high = hpd.int.decay.aut[2]

dens = density(chains.current.individual.df[,"toi"],bw = 5,from = neg.intervals[i],to=0)
cur.toi = round(dens$x[which.max(dens$y)])
hpd.int.toi = HDInterval::hdi(dens,credMass = 0.95,allowSplit=F)    
cur.95.low = round(hpd.int.toi[1])
cur.95.high = round(hpd.int.toi[2])
hpd.int.toi = HDInterval::hdi(dens,credMass = 0.50,allowSplit=F)    
cur.50.low = round(hpd.int.toi[1])
cur.50.high = round(hpd.int.toi[2])


plot1a = ggplot(data=chains.current.individual.df,aes(x=toi)) +
       geom_density(color=brewer.pal(4,"Spectral")[2],fill=brewer.pal(4,"Spectral")[2],alpha=0.6,size=1) +
       geom_vline(xintercept = cur.toi,col="black",size=0.8,alpha=0.6) +
       geom_vline(xintercept = cur.95.low,col="black",size=0.8,linetype="dotted",alpha=0.6) +
       geom_vline(xintercept = cur.95.high,col="black",size=0.8,linetype="dotted",alpha=0.6) +
       geom_vline(xintercept = cur.50.low,col="black",size=0.8,linetype=2,alpha=0.6) +
       geom_vline(xintercept = cur.50.high,col="black",size=0.8,linetype=2,alpha=0.6) +
       theme_light(base_family = "Avenir Next") +
       #ggtitle(paste0("Individual ",model.outputs[i,"pittag"])) +
       xlab("\u03B8 (days)") +
       ylab("Posterior density") +
       theme_light(base_family = "Avenir Next") +
       theme(plot.title = element_text(size = 13),
             text=element_text(size=13),
             axis.text=element_text(size=13),
             axis.title.y = element_text(margin = ggplot2::margin(r=10)),
             #legend.position = c(0.78,0.85),
             legend.position = "none",
             plot.margin = unit(c(0.5,0.75,0.5,0.5),"cm"),
             legend.background = element_rect(colour = "transparent", fill = "transparent"),
             legend.key = element_rect(fill = NA)
       )+
       labs(tag = "(A)")



plot1b = ggplot(data = data.frame(x = 0:15),aes(x=x)) +
       stat_function(fun = dnorm, args = list(mean = cur.peak.titer.pomona,sd = sd(chains.current.individual.df$peak.titer.pomona)),aes(col="Pomona"),size=1.5) +
       #geom_vline(xintercept = cur.peak.titer.pomona,col=brewer.pal(11,"Spectral")[10]) +
       stat_function(fun = dnorm, args = list(mean = cur.peak.titer.aut,sd = sd(chains.current.individual.df$peak.titer.aut)),aes(col="Autumnalis"),size=1.5) +
       #geom_vline(xintercept = cur.peak.titer.aut,col=brewer.pal(11,"Spectral")[1]) +
       scale_color_manual("Serovar",values = c("Pomona" = brewer.pal(11,"Spectral")[10],"Autumnalis" = brewer.pal(11,"Spectral")[1])) +
       theme_light(base_family = "Avenir Next") +
       #ggtitle(paste0("Individual ",model.outputs[i,"pittag"])) +
       xlab("Peak antibody level (log2 dilution)") +
       ylab("Posterior density") +
       theme_light(base_family = "Avenir Next") +
       theme(plot.title = element_text(size = 13),
             text=element_text(size=13),
             axis.text=element_text(size=13),
             axis.title.y = element_text(margin = ggplot2::margin(r=10)),
             legend.position = c(0.2,0.8),
             #legend.position = "none",
             plot.margin = unit(c(0.5,0.75,0.5,0.5),"cm"),
             legend.background = element_rect(colour = "transparent", fill = "transparent"),
             legend.key = element_rect(fill = NA)
       )

plot1c = ggplot(data = data.frame(x = seq(-0.00015,0.002,0.0001)),aes(x=x)) +
       stat_function(fun = dnorm, args = list(mean = cur.decay.pomona,sd = sd(chains.current.individual.df$decay.rate.pomona)),aes(col="Pomona"),size=1.5) +
       #geom_vline(xintercept = cur.decay.pomona,col=brewer.pal(11,"Spectral")[10]) +
       stat_function(fun = dnorm, args = list(mean = cur.decay.aut,sd = sd(chains.current.individual.df$decay.rate.aut)),aes(col="Autumnalis"),size=1.5) +
       #geom_vline(xintercept = cur.peak.titer.aut,col=brewer.pal(11,"Spectral")[1]) +
       scale_color_manual("Serovar",values = c("Pomona" = brewer.pal(11,"Spectral")[10],"Autumnalis" = brewer.pal(11,"Spectral")[1])) +
       theme_light(base_family = "Avenir Next") +
       #ggtitle(paste0("Individual ",model.outputs[i,"pittag"])) +
       xlab("Decay rate (1/day)") +
       ylab("Posterior density") +
       theme_light(base_family = "Avenir Next") +
       theme(plot.title = element_text(size = 13),
             text=element_text(size=13),
             axis.text=element_text(size=13),
             axis.title.y = element_text(margin = ggplot2::margin(r=10)),
             legend.position = c(0.15,0.8),
             #legend.position = "none",
             plot.margin = unit(c(0.5,0.75,0.5,0.5),"cm"),
             legend.background = element_rect(colour = "transparent", fill = "transparent"),
             legend.key = element_rect(fill = NA)
       )




# pomona
# sample N values from posterior distribution to get sense of error

N.samp = 200


set.seed(1234);peak.titer.samp.pomona = sample(chains.current.individual.df$peak.titer.pomona[which(chains.current.individual.df$peak.titer.pomona > cur.95.peak.pomona.low & chains.current.individual.df$peak.titer.pomona < cur.95.peak.pomona.high)], size = N.samp, replace = T)

set.seed(1234);decay.rate.samp.pomona = sample(chains.current.individual.df$decay.rate.pomona[which(chains.current.individual.df$decay.rate.pomona > cur.95.decay.pomona.low & chains.current.individual.df$decay.rate.pomona < cur.95.decay.pomona.high)], size = N.samp, replace = T)

set.seed(1234);peak.titer.samp.aut = sample(chains.current.individual.df$peak.titer.aut[which(chains.current.individual.df$peak.titer.aut > cur.95.peak.aut.low & chains.current.individual.df$peak.titer.aut < cur.95.peak.aut.high)], size = N.samp, replace = T)

set.seed(1234);decay.rate.samp.aut = sample(chains.current.individual.df$decay.rate.aut[which(chains.current.individual.df$decay.rate.aut > cur.95.decay.aut.low & chains.current.individual.df$decay.rate.aut < cur.95.decay.aut.high)], size = N.samp, replace = T)


plot.times = 0:max(observed.data.for.fitting$time.since.peak[which(observed.data.for.fitting$id==i)])

fit.dat.cloud.pomona = data.frame(time = rep(plot.times,N.samp), samp = rep(1:N.samp,each = length(plot.times)), titer = NA,Serovar = "Pomona")

fit.dat.cloud.aut = data.frame(time = rep(plot.times,N.samp), samp = rep(1:N.samp,each = length(plot.times)), titer = NA,Serovar = "Autumnalis")


for(ii in 1:N.samp){
       
       fit.dat.cloud.pomona$titer[which(fit.dat.cloud.pomona$samp == ii)] = exp.fun(start.titer = peak.titer.samp.pomona[ii], rate = -decay.rate.samp.pomona[ii], time = plot.times)
       
       fit.dat.cloud.aut$titer[which(fit.dat.cloud.aut$samp == ii)] = exp.fun(start.titer = peak.titer.samp.aut[ii], rate = -decay.rate.samp.aut[ii], time = plot.times)
       
}

fit.dat.cloud.both = rbind(fit.dat.cloud.pomona,fit.dat.cloud.aut)
fit.dat.cloud.both$samp = paste(fit.dat.cloud.both$Serovar,fit.dat.cloud.both$samp)
fit.dat.cloud.both$Serovar = factor(fit.dat.cloud.both$Serovar,levels = c("Autumnalis","Pomona"))

fit.dat.pomona = exp.fun(start.titer = cur.peak.titer.pomona, rate = -cur.decay.pomona, time = 0:max(observed.data.for.fitting$time.since.peak[which(observed.data.for.fitting$id==i)]))

fit.dat.aut = exp.fun(start.titer = cur.peak.titer.aut, rate = -cur.decay.aut, time = 0:max(observed.data.for.fitting$time.since.peak[which(observed.data.for.fitting$id==i)]))


fit.dat.pomona = data.frame(titer = fit.dat.pomona, time = 0:max(observed.data.for.fitting$time.since.peak[which(observed.data.for.fitting$id==i)]),Serovar = "Pomona")


fit.dat.aut = data.frame(titer = fit.dat.aut, time = 0:max(observed.data.for.fitting$time.since.peak[which(observed.data.for.fitting$id==i)]),Serovar = "Autumnalis")

fit.dat.both = rbind(fit.dat.pomona,fit.dat.aut)

cur.observed.data.for.fitting = gather(observed.data.for.fitting,Serovar,titer,c("titer.pomona","titer.aut"))

cur.observed.data.for.fitting$Serovar[which(cur.observed.data.for.fitting$Serovar=="titer.pomona")] = "Pomona"
cur.observed.data.for.fitting$Serovar[which(cur.observed.data.for.fitting$Serovar=="titer.aut")] = "Autumnalis"

# cur.observed.data.for.fitting$Serovar = factor(cur.observed.data.for.fitting$Serovar,levels = c("Pomona","Autumnalis"))

plot1d = ggplot() +
       #geom_line(data = observed.data.for.fitting[which(observed.data.for.fitting$id==i),],aes(x = time.since.peak,y = titer),alpha = 0.8,size = 1.5,color="#F46D43") +
       geom_line(data=fit.dat.cloud.both, aes(x = time, y = titer, group = samp, col = Serovar ),alpha=0.1,size=0.3) +
       geom_line(data=fit.dat.both,aes(x = time, y = titer,col=Serovar),size=1.75,alpha=1) +
       geom_point(data = cur.observed.data.for.fitting[which(cur.observed.data.for.fitting$id==i),],aes(x = time.since.peak,y = titer,shape=Serovar),size=3,alpha = 0.65,color="black") +
       scale_color_manual(name = "Serovar",labels = c("Pomona","Autumnalis"),values = c("Pomona" = brewer.pal(11,"Spectral")[10],"Autumnalis" = brewer.pal(11,"Spectral")[1])) +
       scale_shape_manual(name = "Serovar",labels = c("Pomona","Autumnalis"),values = c("Pomona" = 16,"Autumnalis" = 17)) +
       scale_y_continuous(limits = c(0,13),breaks=0:13) +
       #ggtitle(paste0("Individual ",model.outputs[i,"pittag"])) +
       theme_light(base_family = "Avenir Next") +
       theme(plot.title = element_text(size = 13),
             text=element_text(size=13),
             axis.text=element_text(size=13),
             axis.title.y = element_text(margin = ggplot2::margin(r=10)),
             legend.position = c(0.75,0.82),
             #legend.position = "none",
             plot.margin = unit(c(0.5,0.75,0.5,0.5),"cm"),
             legend.background = element_rect(colour = "transparent", fill = "transparent"),
             legend.key = element_rect(fill = NA)
       ) +
       xlab("Time since peak antibody level (days)") +
       ylab("Antibody level (log2 dilution)")





# individual 2
i = observed.data.for.fitting$id[which(observed.data.for.fitting$Pittag==pittag.to.plot[2])][1]
chains.current.individual.df = chains.burn.df[,c(paste0("peak.titer.pomona.",i),paste0("peak.titer.aut.",i),paste0("decay.rate.pomona.",i),paste0("decay.rate.aut.",i),paste0("toi.",i),"iteration","chain")]
colnames(chains.current.individual.df) = c("peak.titer.pomona","peak.titer.aut","decay.rate.pomona","decay.rate.aut","toi","iteration","chain")

cur.peak.titer.pomona = round(mean(chains.current.individual.df[,"peak.titer.pomona"]),1)
dens = density(chains.current.individual.df[,"peak.titer.pomona"])
hpd.int.peak.pomona = HDInterval::hdi(dens,credMass = 0.95,allowSplit=F)    
cur.95.peak.pomona.low = round(hpd.int.peak.pomona[1])
cur.95.peak.pomona.high = round(hpd.int.peak.pomona[2])
hpd.int.peak.pomona = HDInterval::hdi(dens,credMass = 0.5,allowSplit=F)    
cur.50.peak.pomona.low = round(hpd.int.peak.pomona[1])
cur.50.peak.pomona.high = round(hpd.int.peak.pomona[2])


cur.decay.pomona = round(mean(chains.current.individual.df[,"decay.rate.pomona"]),6)
dens = density(chains.current.individual.df[,"decay.rate.pomona"])
hpd.int.decay.pomona = HDInterval::hdi(dens,credMass = 0.95,allowSplit=F)    
cur.95.decay.pomona.low = hpd.int.decay.pomona[1]
cur.95.decay.pomona.high = hpd.int.decay.pomona[2]
hpd.int.decay.pomona = HDInterval::hdi(dens,credMass = 0.50,allowSplit=F)    
cur.50.decay.pomona.low = hpd.int.decay.pomona[1]
cur.50.decay.pomona.high = hpd.int.decay.pomona[2]

cur.peak.titer.aut = round(mean(chains.current.individual.df[,"peak.titer.aut"]),1)
dens = density(chains.current.individual.df[,"peak.titer.aut"])
hpd.int.peak.aut = HDInterval::hdi(dens,credMass = 0.95,allowSplit=F)    
cur.95.peak.aut.low = round(hpd.int.peak.aut[1])
cur.95.peak.aut.high = round(hpd.int.peak.aut[2])
hpd.int.peak.aut = HDInterval::hdi(dens,credMass = 0.50,allowSplit=F)    
cur.50.peak.aut.low = round(hpd.int.peak.aut[1])
cur.50.peak.aut.high = round(hpd.int.peak.aut[2])


cur.decay.aut = round(mean(chains.current.individual.df[,"decay.rate.aut"]),6)
dens = density(chains.current.individual.df[,"decay.rate.aut"])
hpd.int.decay.aut = HDInterval::hdi(dens,credMass = 0.95,allowSplit=F)    
cur.95.decay.aut.low = hpd.int.decay.aut[1]
cur.95.decay.aut.high = hpd.int.decay.aut[2]
hpd.int.decay.aut = HDInterval::hdi(dens,credMass = 0.50,allowSplit=F)    
cur.50.decay.aut.low = hpd.int.decay.aut[1]
cur.50.decay.aut.high = hpd.int.decay.aut[2]

dens = density(chains.current.individual.df[,"toi"],bw = 5,from = neg.intervals[i],to=0)
cur.toi = round(dens$x[which.max(dens$y)])
hpd.int.toi = HDInterval::hdi(dens,credMass = 0.95,allowSplit=F)    
cur.95.low = round(hpd.int.toi[1])
cur.95.high = round(hpd.int.toi[2])
hpd.int.toi = HDInterval::hdi(dens,credMass = 0.50,allowSplit=F)    
cur.50.low = round(hpd.int.toi[1])
cur.50.high = round(hpd.int.toi[2])


plot2a = ggplot(data=chains.current.individual.df,aes(x=toi)) +
       geom_density(color=brewer.pal(4,"Spectral")[2],fill=brewer.pal(4,"Spectral")[2],alpha=0.6,size=1) +
       geom_vline(xintercept = cur.toi,col="black",size=0.8,alpha=0.6) +
       geom_vline(xintercept = cur.95.low,col="black",size=0.8,linetype="dotted",alpha=0.6) +
       geom_vline(xintercept = cur.95.high,col="black",size=0.8,linetype="dotted",alpha=0.6) +
       geom_vline(xintercept = cur.50.low,col="black",size=0.8,linetype=2,alpha=0.6) +
       geom_vline(xintercept = cur.50.high,col="black",size=0.8,linetype=2,alpha=0.6) +
       theme_light(base_family = "Avenir Next") +
       #ggtitle(paste0("Individual ",model.outputs[i,"pittag"])) +
       xlab("\u03B8 (days)") +
       ylab("Posterior density") +
       theme_light(base_family = "Avenir Next") +
       theme(plot.title = element_text(size = 13),
             text=element_text(size=13),
             axis.text=element_text(size=13),
             axis.title.y = element_text(margin = ggplot2::margin(r=10)),
             #legend.position = c(0.78,0.85),
             legend.position = "none",
             plot.margin = unit(c(0.5,0.75,0.5,0.5),"cm"),
             legend.background = element_rect(colour = "transparent", fill = "transparent"),
             legend.key = element_rect(fill = NA)
       ) +
       labs(tag = "(B)")



plot2b = ggplot(data = data.frame(x = 0:15),aes(x=x)) +
       stat_function(fun = dnorm, args = list(mean = cur.peak.titer.pomona,sd = sd(chains.current.individual.df$peak.titer.pomona)),aes(col="Pomona"),size=1.5) +
       #geom_vline(xintercept = cur.peak.titer.pomona,col=brewer.pal(11,"Spectral")[10]) +
       stat_function(fun = dnorm, args = list(mean = cur.peak.titer.aut,sd = sd(chains.current.individual.df$peak.titer.aut)),aes(col="Autumnalis"),size=1.5) +
       #geom_vline(xintercept = cur.peak.titer.aut,col=brewer.pal(11,"Spectral")[1]) +
       scale_color_manual("Serovar",values = c("Pomona" = brewer.pal(11,"Spectral")[10],"Autumnalis" = brewer.pal(11,"Spectral")[1])) +
       theme_light(base_family = "Avenir Next") +
       #ggtitle(paste0("Individual ",model.outputs[i,"pittag"])) +
       xlab("Peak antibody level (log2 dilution)") +
       ylab("Posterior density") +
       theme_light(base_family = "Avenir Next") +
       theme(plot.title = element_text(size = 13),
             text=element_text(size=13),
             axis.text=element_text(size=13),
             axis.title.y = element_text(margin = ggplot2::margin(r=10)),
             legend.position = c(0.2,0.8),
             #legend.position = "none",
             plot.margin = unit(c(0.5,0.75,0.5,0.5),"cm"),
             legend.background = element_rect(colour = "transparent", fill = "transparent"),
             legend.key = element_rect(fill = NA)
       )

plot2c = ggplot(data = data.frame(x = seq(-0.00015,0.002,0.0001)),aes(x=x)) +
       stat_function(fun = dnorm, args = list(mean = cur.decay.pomona,sd = sd(chains.current.individual.df$decay.rate.pomona)),aes(col="Pomona"),size=1.5) +
       #geom_vline(xintercept = cur.decay.pomona,col=brewer.pal(11,"Spectral")[10]) +
       stat_function(fun = dnorm, args = list(mean = cur.decay.aut,sd = sd(chains.current.individual.df$decay.rate.aut)),aes(col="Autumnalis"),size=1.5) +
       #geom_vline(xintercept = cur.peak.titer.aut,col=brewer.pal(11,"Spectral")[1]) +
       scale_color_manual("Serovar",values = c("Pomona" = brewer.pal(11,"Spectral")[10],"Autumnalis" = brewer.pal(11,"Spectral")[1])) +
       theme_light(base_family = "Avenir Next") +
       #ggtitle(paste0("Individual ",model.outputs[i,"pittag"])) +
       xlab("Decay rate (1/day)") +
       ylab("Posterior density") +
       theme_light(base_family = "Avenir Next") +
       theme(plot.title = element_text(size = 13),
             text=element_text(size=13),
             axis.text=element_text(size=13),
             axis.title.y = element_text(margin = ggplot2::margin(r=10)),
             legend.position = c(0.15,0.8),
             #legend.position = "none",
             plot.margin = unit(c(0.5,0.75,0.5,0.5),"cm"),
             legend.background = element_rect(colour = "transparent", fill = "transparent"),
             legend.key = element_rect(fill = NA)
       )




# pomona
# sample N values from posterior distribution to get sense of error

N.samp = 200


set.seed(1234);peak.titer.samp.pomona = sample(chains.current.individual.df$peak.titer.pomona[which(chains.current.individual.df$peak.titer.pomona > cur.95.peak.pomona.low & chains.current.individual.df$peak.titer.pomona < cur.95.peak.pomona.high)], size = N.samp, replace = T)

set.seed(1234);decay.rate.samp.pomona = sample(chains.current.individual.df$decay.rate.pomona[which(chains.current.individual.df$decay.rate.pomona > cur.95.decay.pomona.low & chains.current.individual.df$decay.rate.pomona < cur.95.decay.pomona.high)], size = N.samp, replace = T)

set.seed(1234);peak.titer.samp.aut = sample(chains.current.individual.df$peak.titer.aut[which(chains.current.individual.df$peak.titer.aut > cur.95.peak.aut.low & chains.current.individual.df$peak.titer.aut < cur.95.peak.aut.high)], size = N.samp, replace = T)

set.seed(1234);decay.rate.samp.aut = sample(chains.current.individual.df$decay.rate.aut[which(chains.current.individual.df$decay.rate.aut > cur.95.decay.aut.low & chains.current.individual.df$decay.rate.aut < cur.95.decay.aut.high)], size = N.samp, replace = T)


plot.times = 0:max(observed.data.for.fitting$time.since.peak[which(observed.data.for.fitting$id==i)])

fit.dat.cloud.pomona = data.frame(time = rep(plot.times,N.samp), samp = rep(1:N.samp,each = length(plot.times)), titer = NA,Serovar = "Pomona")

fit.dat.cloud.aut = data.frame(time = rep(plot.times,N.samp), samp = rep(1:N.samp,each = length(plot.times)), titer = NA,Serovar = "Autumnalis")


for(ii in 1:N.samp){
       
       fit.dat.cloud.pomona$titer[which(fit.dat.cloud.pomona$samp == ii)] = exp.fun(start.titer = peak.titer.samp.pomona[ii], rate = -decay.rate.samp.pomona[ii], time = plot.times)
       
       fit.dat.cloud.aut$titer[which(fit.dat.cloud.aut$samp == ii)] = exp.fun(start.titer = peak.titer.samp.aut[ii], rate = -decay.rate.samp.aut[ii], time = plot.times)
       
}

fit.dat.cloud.both = rbind(fit.dat.cloud.pomona,fit.dat.cloud.aut)
fit.dat.cloud.both$samp = paste(fit.dat.cloud.both$Serovar,fit.dat.cloud.both$samp)
fit.dat.cloud.both$Serovar = factor(fit.dat.cloud.both$Serovar,levels = c("Autumnalis","Pomona"))

fit.dat.pomona = exp.fun(start.titer = cur.peak.titer.pomona, rate = -cur.decay.pomona, time = 0:max(observed.data.for.fitting$time.since.peak[which(observed.data.for.fitting$id==i)]))

fit.dat.aut = exp.fun(start.titer = cur.peak.titer.aut, rate = -cur.decay.aut, time = 0:max(observed.data.for.fitting$time.since.peak[which(observed.data.for.fitting$id==i)]))


fit.dat.pomona = data.frame(titer = fit.dat.pomona, time = 0:max(observed.data.for.fitting$time.since.peak[which(observed.data.for.fitting$id==i)]),Serovar = "Pomona")


fit.dat.aut = data.frame(titer = fit.dat.aut, time = 0:max(observed.data.for.fitting$time.since.peak[which(observed.data.for.fitting$id==i)]),Serovar = "Autumnalis")

fit.dat.both = rbind(fit.dat.pomona,fit.dat.aut)

cur.observed.data.for.fitting = gather(observed.data.for.fitting,Serovar,titer,c("titer.pomona","titer.aut"))

cur.observed.data.for.fitting$Serovar[which(cur.observed.data.for.fitting$Serovar=="titer.pomona")] = "Pomona"
cur.observed.data.for.fitting$Serovar[which(cur.observed.data.for.fitting$Serovar=="titer.aut")] = "Autumnalis"

# cur.observed.data.for.fitting$Serovar = factor(cur.observed.data.for.fitting$Serovar,levels = c("Pomona","Autumnalis"))

plot2d = ggplot() +
       #geom_line(data = observed.data.for.fitting[which(observed.data.for.fitting$id==i),],aes(x = time.since.peak,y = titer),alpha = 0.8,size = 1.5,color="#F46D43") +
       geom_line(data=fit.dat.cloud.both, aes(x = time, y = titer, group = samp, col = Serovar ),alpha=0.1,size=0.3) +
       geom_line(data=fit.dat.both,aes(x = time, y = titer,col=Serovar),size=1.75,alpha=1) +
       geom_point(data = cur.observed.data.for.fitting[which(cur.observed.data.for.fitting$id==i),],aes(x = time.since.peak,y = titer,shape=Serovar),size=3,alpha = 0.65,color="black") +
       scale_color_manual(name = "Serovar",labels = c("Pomona","Autumnalis"),values = c("Pomona" = brewer.pal(11,"Spectral")[10],"Autumnalis" = brewer.pal(11,"Spectral")[1])) +
       scale_shape_manual(name = "Serovar",labels = c("Pomona","Autumnalis"),values = c("Pomona" = 16,"Autumnalis" = 17)) +
       scale_y_continuous(limits = c(0,13),breaks=0:13) +
       #ggtitle(paste0("Individual ",model.outputs[i,"pittag"])) +
       theme_light(base_family = "Avenir Next") +
       theme(plot.title = element_text(size = 13),
             text=element_text(size=13),
             axis.text=element_text(size=13),
             axis.title.y = element_text(margin = ggplot2::margin(r=10)),
             legend.position = c(0.3,0.2),
             #legend.position = "none",
             plot.margin = unit(c(0.5,0.75,0.5,0.5),"cm"),
             legend.background = element_rect(colour = "transparent", fill = "transparent"),
             legend.key = element_rect(fill = NA)
       ) +
       xlab("Time since peak antibody level (days)") +
       ylab("Antibody level (log2 dilution)")



plot_fig4 = plot1a + plot1b + plot1d + 
       plot2a + plot2b + plot2d

plot_fig4

3.5 Individual posteriors for seroconversion time

Using full posterior density, 80% CrI and 50% CrI:

#plot.order = rev(order(model.outputs$toi.estimated.maxdens))  # order by maxdens
plot.order = rev(order(neg.intervals))


theta.all.ordered = as.data.frame(theta.all[,plot.order]) %>%
       gather

theta.all.ordered$key = rep(1:N.inds, each = 6000)
colnames(theta.all.ordered) = c("id","toi")

theta.all.ordered$toi50 = theta.all.ordered$toi
theta.all.ordered$toi80 = theta.all.ordered$toi
theta.all.ordered$toi95 = theta.all.ordered$toi

for(i in 1:N.inds){
       toi.sorted = sort(theta.all.ordered$toi[which(theta.all.ordered$id==unique(theta.all.ordered$id)[i])])
       
       toi.50ci.low = toi.sorted[floor(0.25 * length(toi.sorted))]
       toi.50ci.hi = toi.sorted[floor(0.75 * length(toi.sorted))]
       theta.all.ordered$toi50[which(theta.all.ordered$id==unique(theta.all.ordered$id)[i] & (theta.all.ordered$toi < toi.50ci.low | theta.all.ordered$toi > toi.50ci.hi))] = NA
       
       toi.80ci.low = toi.sorted[floor(0.1 * length(toi.sorted))]
       toi.80ci.hi = toi.sorted[floor(0.9 * length(toi.sorted))]
       theta.all.ordered$toi80[which(theta.all.ordered$id==unique(theta.all.ordered$id)[i] & (theta.all.ordered$toi < toi.80ci.low | theta.all.ordered$toi > toi.80ci.hi))] = NA
       
       toi.95ci.low = toi.sorted[floor(0.025 * length(toi.sorted))]
       toi.95ci.hi = toi.sorted[floor(0.975 * length(toi.sorted))]
       theta.all.ordered$toi95[which(theta.all.ordered$id==unique(theta.all.ordered$id)[i] & (theta.all.ordered$toi < toi.95ci.low | theta.all.ordered$toi > toi.95ci.hi))] = NA
}

# divide into 4 parts for plotting
theta.all.ordered.part1 = theta.all.ordered[which(theta.all.ordered$id %in% 1:floor(N.inds/4)),]
theta.all.ordered.part2 = theta.all.ordered[which(theta.all.ordered$id %in% (floor(N.inds/4)+1):(floor(N.inds/4)*2)),]
theta.all.ordered.part3 = theta.all.ordered[which(theta.all.ordered$id %in% ((floor(N.inds/4)*2)+1):(floor(N.inds/4)*3)),]
theta.all.ordered.part4 = theta.all.ordered[which(theta.all.ordered$id %in% ((floor(N.inds/4)*3)+1):N.inds),]


individual.theta.plots.1 = ggplot() +
       geom_density_ridges(data = theta.all.ordered.part1,aes(x = toi,y = factor(id),height=..density..), stat = "density",size=0.1,trim=T,fill = brewer.pal(11,"Spectral")[10],alpha=0.8) +
       geom_density_ridges(data = theta.all.ordered.part1,aes(x = toi80,y = factor(id),height=..density..), stat = "density",size=0.1,trim=T,fill = brewer.pal(11,"Spectral")[2],alpha=0.8) +
       geom_density_ridges(data = theta.all.ordered.part1,aes(x = toi50,y = factor(id),height=..density..), stat = "density",size=0.1,trim=T,fill = brewer.pal(11,"Spectral")[5],alpha=0.8) +
       coord_flip() +
       ylab("ID") +
       xlab("\u03B8 (days)") +
       #ggtitle("1/4") +
       theme_light(base_family = "Avenir Next") +        
       theme(plot.title  =  element_text(size  = 11),              
             text = element_text(size = 11),              
             axis.text.y = element_text(size = 11),
             axis.text.x = element_blank(),        
             axis.title.y  =  element_text(margin  =  ggplot2::margin(r = 10)))

individual.theta.plots.2 = ggplot() +
       geom_density_ridges(data = theta.all.ordered.part2,aes(x = toi,y = factor(id),height=..density..), stat = "density",size=0.1,trim=T,fill = brewer.pal(11,"Spectral")[10],alpha=0.8) +
       geom_density_ridges(data = theta.all.ordered.part2,aes(x = toi80,y = factor(id),height=..density..), stat = "density",size=0.1,trim=T,fill = brewer.pal(11,"Spectral")[2],alpha=0.8) +
       geom_density_ridges(data = theta.all.ordered.part2,aes(x = toi50,y = factor(id),height=..density..), stat = "density",size=0.1,trim=T,fill = brewer.pal(11,"Spectral")[5],alpha=0.8) +
       coord_flip() +
       ylab("ID") +
       xlab("\u03B8 (days)") +
       #ggtitle("Peak titer time (2/4)") +
       theme_light(base_family = "Avenir Next") +        
       theme(plot.title  =  element_text(size  = 11),              
             text = element_text(size = 11),              
             axis.text.y = element_text(size = 11),
             axis.text.x = element_blank(),
             axis.title.y  =  element_text(margin  =  ggplot2::margin(r = 10))              )

individual.theta.plots.3 = ggplot() +
       geom_density_ridges(data = theta.all.ordered.part3,aes(x = toi,y = factor(id),height=..density..), stat = "density",size=0.1,trim=T,fill = brewer.pal(11,"Spectral")[10],alpha=0.8) +
       geom_density_ridges(data = theta.all.ordered.part3,aes(x = toi80,y = factor(id),height=..density..), stat = "density",size=0.1,trim=T,fill = brewer.pal(11,"Spectral")[2],alpha=0.8) +
       geom_density_ridges(data = theta.all.ordered.part3,aes(x = toi50,y = factor(id),height=..density..), stat = "density",size=0.1,trim=T,fill = brewer.pal(11,"Spectral")[5],alpha=0.8) +
       coord_flip() +
       ylab("ID") +
       xlab("\u03B8 (days)") +
       #ggtitle("Peak titer time (3/4)") +
       theme_light(base_family = "Avenir Next") +        
       theme(plot.title  =  element_text(size  = 11),              
             text = element_text(size = 11),              
             axis.text.y = element_text(size = 11),
             axis.text.x = element_blank(),
             axis.title.y  =  element_text(margin  =  ggplot2::margin(r = 10))              )

individual.theta.plots.4 = ggplot() +
       geom_density_ridges(data = theta.all.ordered.part4,aes(x = toi,y = factor(id),height=..density..), stat = "density",size=0.1,trim=T,fill = brewer.pal(11,"Spectral")[10],alpha=0.8) +
       geom_density_ridges(data = theta.all.ordered.part4,aes(x = toi80,y = factor(id),height=..density..), stat = "density",size=0.1,trim=T,fill = brewer.pal(11,"Spectral")[2],alpha=0.8) +
       geom_density_ridges(data = theta.all.ordered.part4,aes(x = toi50,y = factor(id),height=..density..), stat = "density",size=0.1,trim=T,fill = brewer.pal(11,"Spectral")[5],alpha=0.8) +
       coord_flip() +
       ylab("ID") +
       xlab("\u03B8 (days)") +
       #ggtitle("Peak titer time (4/4)") +
       theme_light(base_family = "Avenir Next") +        
       theme(plot.title  =  element_text(size  = 11),              
             text = element_text(size = 11),              
             axis.text.y = element_text(size = 11),
             axis.text.x = element_blank(),          
             axis.title.y  =  element_text(margin  =  ggplot2::margin(r = 10))              )

individual.theta.plots.all = individual.theta.plots.1 / 
       individual.theta.plots.2 / 
       individual.theta.plots.3 /
       individual.theta.plots.4

individual.theta.plots.all

Using full posterior density, 95% CrI and 50% CrI:

individual.theta.plots.1 = ggplot() +
       geom_density_ridges(data = theta.all.ordered.part1,aes(x = toi,y = factor(id),height=..scaled..), stat = "density",size=0.1,trim=T,fill = brewer.pal(11,"Spectral")[10],alpha=0.8, scale = 0.8) +
       geom_density_ridges(data = theta.all.ordered.part1,aes(x = toi95,y = factor(id),height=..scaled..), stat = "density",size=0.1,trim=T,fill = brewer.pal(11,"Spectral")[2],alpha=0.8, scale = 0.8) +
       geom_density_ridges(data = theta.all.ordered.part1,aes(x = toi50,y = factor(id),height=..scaled..), stat = "density",size=0.1,trim=T,fill = brewer.pal(11,"Spectral")[5],alpha=0.8, scale = 0.8) +
       coord_flip() +
       ylab("ID") +
       xlab("\u03B8 (days)") +
       #ggtitle("1/4") +
       theme_light(base_family = "Avenir Next") +        
       theme(plot.title  =  element_text(size  = 11),              
             text = element_text(size = 11),              
             axis.text.y = element_text(size = 11),
             axis.text.x = element_blank(),        
             axis.title.y  =  element_text(margin  =  ggplot2::margin(r = 10)))

individual.theta.plots.2 = ggplot() +
       geom_density_ridges(data = theta.all.ordered.part2,aes(x = toi,y = factor(id),height=..scaled..), stat = "density",size=0.1,trim=T,fill = brewer.pal(11,"Spectral")[10],alpha=0.8, scale = 0.8) +
       geom_density_ridges(data = theta.all.ordered.part2,aes(x = toi95,y = factor(id),height=..scaled..), stat = "density",size=0.1,trim=T,fill = brewer.pal(11,"Spectral")[2],alpha=0.8, scale = 0.8) +
       geom_density_ridges(data = theta.all.ordered.part2,aes(x = toi50,y = factor(id),height=..scaled..), stat = "density",size=0.1,trim=T,fill = brewer.pal(11,"Spectral")[5],alpha=0.8, scale = 0.8) +
       coord_flip() +
       ylab("ID") +
       xlab("\u03B8 (days)") +
       #ggtitle("Peak titer time (2/4)") +
       theme_light(base_family = "Avenir Next") +        
       theme(plot.title  =  element_text(size  = 11),              
             text = element_text(size = 11),              
             axis.text.y = element_text(size = 11),
             axis.text.x = element_blank(),
             axis.title.y  =  element_text(margin  =  ggplot2::margin(r = 10))              )

individual.theta.plots.3 = ggplot() +
       geom_density_ridges(data = theta.all.ordered.part3,aes(x = toi,y = factor(id),height=..scaled..), stat = "density",size=0.1,trim=T,fill = brewer.pal(11,"Spectral")[10],alpha=0.8, scale = 0.8) +
       geom_density_ridges(data = theta.all.ordered.part3,aes(x = toi95,y = factor(id),height=..scaled..), stat = "density",size=0.1,trim=T,fill = brewer.pal(11,"Spectral")[2],alpha=0.8, scale = 0.8) +
       geom_density_ridges(data = theta.all.ordered.part3,aes(x = toi50,y = factor(id),height=..scaled..), stat = "density",size=0.1,trim=T,fill = brewer.pal(11,"Spectral")[5],alpha=0.8, scale = 0.8) +
       coord_flip() +
       ylab("ID") +
       xlab("\u03B8 (days)") +
       #ggtitle("Peak titer time (3/4)") +
       theme_light(base_family = "Avenir Next") +        
       theme(plot.title  =  element_text(size  = 11),              
             text = element_text(size = 11),              
             axis.text.y = element_text(size = 11),
             axis.text.x = element_blank(),
             axis.title.y  =  element_text(margin  =  ggplot2::margin(r = 10))              )

individual.theta.plots.4 = ggplot() +
       geom_density_ridges(data = theta.all.ordered.part4,aes(x = toi,y = factor(id),height=..scaled..), stat = "density",size=0.1,trim=T,fill = brewer.pal(11,"Spectral")[10],alpha=0.8, scale = 0.8) +
       geom_density_ridges(data = theta.all.ordered.part4,aes(x = toi95,y = factor(id),height=..scaled..), stat = "density",size=0.1,trim=T,fill = brewer.pal(11,"Spectral")[2],alpha=0.8, scale = 0.8) +
       geom_density_ridges(data = theta.all.ordered.part4,aes(x = toi50,y = factor(id),height=..scaled..), stat = "density",size=0.1,trim=T,fill = brewer.pal(11,"Spectral")[5],alpha=0.8, scale = 0.8) +
       coord_flip() +
       ylab("ID") +
       xlab("\u03B8 (days)") +
       #ggtitle("Peak titer time (4/4)") +
       theme_light(base_family = "Avenir Next") +        
       theme(plot.title  =  element_text(size  = 11),              
             text = element_text(size = 11),              
             axis.text.y = element_text(size = 11),
             axis.text.x = element_blank(),          
             axis.title.y  =  element_text(margin  =  ggplot2::margin(r = 10))              )

individual.theta.plots.all = individual.theta.plots.1 / 
       individual.theta.plots.2 / 
       individual.theta.plots.3 /
       individual.theta.plots.4

individual.theta.plots.all

# ggsave(plot = individual.theta.plots.all,filename = "/Users/bennyborremans/Documents/Werk/Manuscripten/Eerste auteur/ongoing/Fox titer kinetics/Figures/Figure_posterior_toi_all_individuals_incl95_50cri.png",width = 9, height = 12, dpi=600)




3.6 Mean information gained

3.6.1 Using only individuals for which there is at least one Autumnalis

result

# exclude individuals without any Aut samples     

model.outputs.aut.not.all.na = model.outputs[id.aut.not.all.na,]

Mean amount of information gained (% reduction of seroconversion interval):

95% CrI:

0.1076027
(standard error = 0.0051746)
Range: 0.0547945, 0.665362

Median:
0.0861057

80% CrI: 0.3146771
(standard error = 0.0068027)
Range: 0.2133072, 0.81409 Median:
0.2876712

50% CrI: 0.6108317
(standard error = 0.0054368)
Range: 0.5127202, 0.9158513 Median:
0.5968689
## KL-divergence

3.6.2 Using only individuals for which there is at least one Autumnalis

result

Mean amount of information gained (KL-divergence):
0.1077575
(standard error = 0.0136857)
Range: 0.0061715, 1.6953464

Median: 0.1077575

Histogram:

plot.seroconv.red = ggplot(data = model.outputs.aut.not.all.na, aes(x = toi.information.gained.95cri.perc)) +
       geom_histogram(bins=12,binwidth = 0.01,fill="#9E0142",col="black",aes(y = ..density..)) +
       theme_classic(base_family = "Avenir Next") +
       scale_x_continuous(limits = c(0,0.6)) +
       scale_color_manual("Distribution",values = c("N(6,2.2)" = "#66C2A5","N(7,3)" = "#FDAE61")) +
       theme_light(base_family = "Avenir Next") +
       theme(plot.title = element_text(size = 11),
             text=element_text(size=11),
             axis.text=element_text(size=10),
             axis.title.y = element_text(margin = ggplot2::margin(r=10)),
             plot.margin = unit(c(0.5,0.75,0.5,0.5),"cm")
       ) +
       xlab("Seroconversion interval reduction (%)") +
       ylab("Density")

plot.seroconv.red

# ggsave(plot = plot.seroconv.red,filename = "/Users/bennyborremans/Documents/Werk/Manuscripten/Eerste auteur/ongoing/Fox titer kinetics/Figures/SI_figure_seroconversion_interval_reduction_at_least_one_aut_pos_histogram.png",width = 4, height = 4, dpi=600)

3.7 Mean information gained

3.7.1 Using all individuals

Mean amount of information gained (% reduction of seroconversion interval):

95% CrI: 0.1078679
(standard error = 0.0040142)
Range: 0.0508806, 0.665362 Median:
0.0861057

80% CrI: 0.3151641
(standard error = 0.0054602)
Range: 0.2074364, 0.81409 Median:
0.2876712

50% CrI: 0.6113516
(standard error = 0.0043927)
Range: 0.5127202, 0.9158513 Median:
0.592955

3.8 KL-divergence

3.8.1 Using all individuals

Mean amount of information gained (KL-divergence):
0.1074396
(standard error = 0.0103598)
Range: 0.0061715, 1.6953464

Median:
0.1074396

Histogram:

95% CrI:

plot.seroconv.red = ggplot(data = model.outputs, aes(x = toi.information.gained.95cri.perc)) +
       geom_histogram(bins=12,binwidth = 0.01,fill="#9E0142",col="black",aes(y = ..density..)) +
       theme_classic(base_family = "Avenir Next") +
       scale_x_continuous(breaks = seq(0,1,0.1)) +
       scale_color_manual("Distribution",values = c("N(6,2.2)" = "#66C2A5","N(7,3)" = "#FDAE61")) +
       theme_light(base_family = "Avenir Next") +
       theme(plot.title = element_text(size = 11),
             text=element_text(size=11),
             axis.text=element_text(size=10),
             axis.title.y = element_text(margin = ggplot2::margin(r=10)),
             plot.margin = unit(c(0.5,0.75,0.5,0.5),"cm")
       ) +
       xlab("Seroconversion interval reduction (%)") +
       ylab("Density")

plot.seroconv.red

# ggsave(plot = plot.seroconv.red,filename = "/Users/bennyborremans/Documents/Werk/Manuscripten/Eerste auteur/ongoing/Fox titer kinetics/Figures/SI_figure_seroconversion_interval_reduction_95cri_all_samples_histogram.png",width = 4, height = 4, dpi=600)

80% CrI:

plot.seroconv.red = ggplot(data = model.outputs, aes(x = toi.information.gained.80cri.perc)) +
       geom_histogram(bins=12,binwidth = 0.01,fill="#9E0142",col="black",aes(y = ..density..)) +
       theme_classic(base_family = "Avenir Next") +
       scale_x_continuous(breaks = seq(0,1,0.1)) +
       scale_color_manual("Distribution",values = c("N(6,2.2)" = "#66C2A5","N(7,3)" = "#FDAE61")) +
       theme_light(base_family = "Avenir Next") +
       theme(plot.title = element_text(size = 11),
             text=element_text(size=11),
             axis.text=element_text(size=10),
             axis.title.y = element_text(margin = ggplot2::margin(r=10)),
             plot.margin = unit(c(0.5,0.75,0.5,0.5),"cm")
       ) +
       xlab("Seroconversion interval reduction (%)") +
       ylab("Density")

plot.seroconv.red

# ggsave(plot = plot.seroconv.red,filename = "/Users/bennyborremans/Documents/Werk/Manuscripten/Eerste auteur/ongoing/Fox titer kinetics/Figures/SI_figure_seroconversion_interval_reduction_80cri_all_samples_histogram.png",width = 4, height = 4, dpi=600)

50% CrI:

plot.seroconv.red = ggplot(data = model.outputs, aes(x = toi.information.gained.50cri.perc)) +
       geom_histogram(bins=12,binwidth = 0.01,fill="#9E0142",col="black",aes(y = ..density..)) +
       theme_classic(base_family = "Avenir Next") +
       scale_x_continuous(breaks = seq(0,1,0.1)) +
       scale_color_manual("Distribution",values = c("N(6,2.2)" = "#66C2A5","N(7,3)" = "#FDAE61")) +
       theme_light(base_family = "Avenir Next") +
       theme(plot.title = element_text(size = 11),
             text=element_text(size=11),
             axis.text=element_text(size=10),
             axis.title.y = element_text(margin = ggplot2::margin(r=10)),
             plot.margin = unit(c(0.5,0.75,0.5,0.5),"cm")
       ) +
       xlab("Seroconversion interval reduction (%)") +
       ylab("Density")

plot.seroconv.red

# ggsave(plot = plot.seroconv.red,filename = "/Users/bennyborremans/Documents/Werk/Manuscripten/Eerste auteur/ongoing/Fox titer kinetics/Figures/SI_figure_seroconversion_interval_reduction_50cri_all_samples_histogram.png",width = 4, height = 4, dpi=600)

3.9 Correlation between interval size reduction and KL-divergence

95% CrI:

ggplot(model.outputs,aes(x = toi.information.gained.95cri.perc, y = kl.divergence)) +
       geom_point(color = brewer.pal(11,"Spectral")[2],size = 0.5) +
       theme_light(base_family = "Avenir Next") +
       theme(plot.title = element_text(size = 11),
             text=element_text(size=11),
             axis.text=element_text(size=10),
             axis.title.y = element_text(margin = ggplot2::margin(r=10)),
             plot.margin = unit(c(0.5,0.75,0.5,0.5),"cm")
       ) +
       xlab("Seroconversion interval reduction (%)") +
       ylab("Relative entropy (bits)")

80% CrI:

ggplot(model.outputs,aes(x = toi.information.gained.80cri.perc, y = kl.divergence)) +
       geom_point(color = brewer.pal(11,"Spectral")[2],size = 0.5) +
       theme_light(base_family = "Avenir Next") +
       theme(plot.title = element_text(size = 11),
             text=element_text(size=11),
             axis.text=element_text(size=10),
             axis.title.y = element_text(margin = ggplot2::margin(r=10)),
             plot.margin = unit(c(0.5,0.75,0.5,0.5),"cm")
       ) +
       xlab("Seroconversion interval reduction (%)") +
       ylab("Relative entropy (bits)")

50% CrI:

ggplot(model.outputs,aes(x = toi.information.gained.50cri.perc, y = kl.divergence)) +
       geom_point(color = brewer.pal(11,"Spectral")[2],size = 0.5) +
       theme_light(base_family = "Avenir Next") +
       theme(plot.title = element_text(size = 11),
             text=element_text(size=11),
             axis.text=element_text(size=10),
             axis.title.y = element_text(margin = ggplot2::margin(r=10)),
             plot.margin = unit(c(0.5,0.75,0.5,0.5),"cm")
       ) +
       xlab("Seroconversion interval reduction (%)") +
       ylab("Relative entropy (bits)")

3.10 Correlates of model performance

Why does the model result in better estimates of seroconversion time for some individuals than for others?

3.10.1 Seroconversion interval size

All for 95% CrI

model.outputs$interval.size = abs(neg.intervals)

ggplot(model.outputs,aes(x = interval.size, y = 100*toi.information.gained.95cri.perc)) +
       geom_point(color = brewer.pal(11,"Spectral")[2],size = 0.7) +
       scale_y_continuous(limits=c(0,65)) +
       theme_light(base_family = "Avenir Next") +
       theme(plot.title = element_text(size = 11),
             text=element_text(size=11),
             axis.text=element_text(size=10),
             axis.title.y = element_text(margin = ggplot2::margin(r=10)),
             plot.margin = unit(c(0.5,0.75,0.5,0.5),"cm")
       )+
       xlab("Seroconversion interval size (days)") +
       ylab("Interval reduction (%)")

# lm.interval.size = lm(log(toi.information.gained.95cri.perc) ~ scale(interval.size),data = model.outputs)

lm.interval.size = brm(log(toi.information.gained.95cri.perc) ~ scale(interval.size),data = model.outputs)

3.10.2 Range of time covered by datapoints

model.outputs$datarange = NA

for(i in 1:nrow(model.outputs)){
       model.outputs$datarange[i] = max(observed.data.for.fitting$time[which(observed.data.for.fitting$id == i)])
}

ggplot(model.outputs,aes(x = datarange, y = 100*toi.information.gained.95cri.perc)) +
       geom_point(color = brewer.pal(11,"Spectral")[2],size = 0.5) +
       scale_y_continuous(limits=c(0,65)) +
       theme_light(base_family = "Avenir Next") +
       theme(plot.title = element_text(size = 11),
             text=element_text(size=11),
             axis.text=element_text(size=10),
             axis.title.y = element_text(margin = ggplot2::margin(r=10)),
             plot.margin = unit(c(0.5,0.75,0.5,0.5),"cm")
       ) +
       xlab("Range of datapoints (days)") +
       ylab("Interval reduction (%)")

# lm.datarange = lm(log(toi.information.gained.95cri.perc) ~ scale(datarange),data = model.outputs)
lm.datarange = brm(log(toi.information.gained.95cri.perc) ~ scale(datarange),data = model.outputs)

3.10.3 Number of datapoints

model.outputs$number.of.datapoints = NA

for(i in 1:nrow(model.outputs)){
       model.outputs$number.of.datapoints[i] = sum(observed.data.for.fitting$id == i)
}

ggplot(model.outputs,aes(x = number.of.datapoints, y = 100*toi.information.gained.95cri.perc)) +
       geom_point(color = brewer.pal(11,"Spectral")[2],size = 0.5) +
       scale_y_continuous(limits = c(0,65)) +
       theme_light(base_family = "Avenir Next") +
       theme(plot.title = element_text(size = 11),
             text=element_text(size=11),
             axis.text=element_text(size=10),
             axis.title.y = element_text(margin = ggplot2::margin(r=10)),
             plot.margin = unit(c(0.5,0.75,0.5,0.5),"cm")
       ) +
       xlab("Number of datapoints") +
       ylab("Interval reduction (%)")

#lm.number.of.datapoints = lm(log(toi.information.gained.95cri.perc) ~ scale(number.of.datapoints),data = model.outputs)
lm.number.of.datapoints = brm(log(toi.information.gained.95cri.perc) ~ scale(number.of.datapoints),data = model.outputs)

3.10.4 Estimated peak level

ggplot(model.outputs,aes(x = peak.titer.estimated.mean.pomona, y = 100*toi.information.gained.95cri.perc)) +
       geom_point(color = brewer.pal(11,"Spectral")[2],size = 0.5) +
       scale_y_continuous(limits = c(0,65)) +
       scale_x_continuous(breaks = seq(0,15,2)) +
       theme_light(base_family = "Avenir Next") +
       theme(plot.title = element_text(size = 11),
             text=element_text(size=11),
             axis.text=element_text(size=10),
             axis.title.y = element_text(margin = ggplot2::margin(r=10)),
             plot.margin = unit(c(0.5,0.75,0.5,0.5),"cm")
       ) +
       xlab("Estimated peak antibody level \n(log2 dilution)") +
       ylab("Interval reduction (%)")

#lm.estimated.peak.level = lm(log(toi.information.gained.95cri.perc) ~ scale(peak.titer.estimated.mean.pomona),data = model.outputs)
lm.estimated.peak.level = brm(log(toi.information.gained.95cri.perc) ~ scale(peak.titer.estimated.mean.pomona),data = model.outputs)

3.10.5 Antibody level of the first positive sample

model.outputs$first.pos.level = observed.data.for.fitting$titer.pomona[which(observed.data.for.fitting$time==0)]

# unique(observed.data.for.fitting$Pittag) %in% model.outputs$pittag

ggplot(model.outputs,aes(x = first.pos.level, y = 100*toi.information.gained.95cri.perc)) +
       geom_jitter(color = brewer.pal(11,"Spectral")[2],size = 0.7,width=0.1) +
       scale_x_continuous(breaks=seq(0,15,2)) +
       scale_y_continuous(limits=c(0,65)) +
       theme_light(base_family = "Avenir Next") +
       theme(plot.title = element_text(size = 11),
             text=element_text(size=11),
             axis.text=element_text(size=10),
             axis.title.y = element_text(margin = ggplot2::margin(r=10)),
             plot.margin = unit(c(0.5,0.75,0.5,0.5),"cm")
       )+
       xlab("Pomona level first positive sample \n(log2 dilutions)") +
       ylab("Interval reduction (%)")

#lm.first.pos.level = lm(log(toi.information.gained.95cri.perc) ~ scale(first.pos.level),data = model.outputs)
lm.first.pos.level = brm(log(toi.information.gained.95cri.perc) ~ scale(first.pos.level),data = model.outputs)

3.10.6 Estimated decay rate

ggplot(model.outputs,aes(x = decay.rate.estimated.mean.pomona, y = 100*toi.information.gained.95cri.perc)) +
       geom_point(color = brewer.pal(11,"Spectral")[2],size = 0.5) +
       scale_y_continuous(limits = c(0,65)) +
       theme_light(base_family = "Avenir Next") +
       theme(plot.title = element_text(size = 11),
             text=element_text(size=11),
             axis.text=element_text(size=10),
             axis.title.y = element_text(margin = ggplot2::margin(r=10)),
             plot.margin = unit(c(0.5,0.75,0.5,0.5),"cm")
       ) +
       xlab("Estimated decay rate") +
       ylab("Interval reduction (%)")

#lm.decay.rate = lm(log(toi.information.gained.95cri.perc) ~ scale(decay.rate.estimated.mean.pomona),data = model.outputs)
lm.decay.rate = brm(log(toi.information.gained.95cri.perc) ~ scale(decay.rate.estimated.mean.pomona),data = model.outputs)

3.10.7 Estimated decay rate and estimate peak antibody level

ggplot(model.outputs,aes(x = decay.rate.estimated.mean.pomona, y = peak.titer.estimated.mean.pomona,color = 100*toi.information.gained.95cri.perc)) +
       geom_point(size = 1) +
       scale_y_continuous(breaks = seq(0,15,2)) +
       scale_color_gradientn(name = "Interval \nreduction \n(%)",colors =  rev(brewer.pal(11,"Spectral")[c(1,2,3,5,8,10,11)])) +
       theme_light(base_family = "Avenir Next") +
       theme(plot.title = element_text(size = 11),
             text=element_text(size=11),
             axis.text=element_text(size=10),
             axis.title.y = element_text(margin = ggplot2::margin(r=10)),
             plot.margin = unit(c(0.5,0.75,0.5,0.5),"cm")
       ) +
       xlab("Estimated decay rate") +
       ylab("Estimated peak level")

#lm.decay.rate.and.estimated.peak.level = lm(log(toi.information.gained.95cri.perc) ~ scale(decay.rate.estimated.mean.pomona) + scale(peak.titer.estimated.mean.pomona),data = model.outputs)
lm.decay.rate.and.estimated.peak.level = brm(log(toi.information.gained.95cri.perc) ~ scale(decay.rate.estimated.mean.pomona) + scale(peak.titer.estimated.mean.pomona),data = model.outputs)

3.10.8 Estimated decay rate and first positive level

ggplot(model.outputs,aes(x = decay.rate.estimated.mean.pomona, y = first.pos.level,color = 100*toi.information.gained.95cri.perc)) +
       geom_point(size = 1) +
       scale_y_continuous(breaks = seq(0,15,2)) +
       scale_color_gradientn(name = "Interval \nreduction \n(%)",colors =  rev(brewer.pal(11,"Spectral")[c(1,2,3,5,8,10,11)])) +
       theme_light(base_family = "Avenir Next") +
       theme(plot.title = element_text(size = 11),
             text=element_text(size=11),
             axis.text=element_text(size=10),
             axis.title.y = element_text(margin = ggplot2::margin(r=10)),
             plot.margin = unit(c(0.5,0.75,0.5,0.5),"cm")
       ) +
       xlab("Estimated decay rate") +
       ylab("First positive sample level")

#lm.decay.rate.and.first.positive.level = lm(log(toi.information.gained.95cri.perc) ~ scale(decay.rate.estimated.mean.pomona) + scale(first.pos.level),data = model.outputs)
lm.decay.rate.and.first.positive.level = brm(log(toi.information.gained.95cri.perc) ~ scale(decay.rate.estimated.mean.pomona) + scale(first.pos.level),data = model.outputs)

3.10.9 Interval size and decay rate

ggplot(model.outputs,aes(x = decay.rate.estimated.mean.pomona, y = interval.size,color = 100*toi.information.gained.95cri.perc)) +
       geom_point(size = 1) +
       #scale_y_continuous(breaks = seq(0,15,2)) +
       scale_color_gradientn(name = "Interval \nreduction \n(%)",colors =  rev(brewer.pal(11,"Spectral")[c(1,2,3,5,8,10,11)])) +
       theme_light(base_family = "Avenir Next") +
       theme(plot.title = element_text(size = 11),
             text=element_text(size=11),
             axis.text=element_text(size=10),
             axis.title.y = element_text(margin = ggplot2::margin(r=10)),
             plot.margin = unit(c(0.5,0.75,0.5,0.5),"cm")
       ) +
       xlab("Estimated decay rate (1/day)") +
       ylab("Seroconversion interval size (days)")

lm.decay.rate.and.interval.size = brm(log(toi.information.gained.95cri.perc) ~ scale(decay.rate.estimated.mean.pomona) + scale(interval.size),data = model.outputs)

3.10.10 Interval size and peak level

ggplot(model.outputs,aes(x = interval.size, y = peak.titer.estimated.mean.pomona,color = 100*toi.information.gained.95cri.perc)) +
       geom_point(size = 1) +
       scale_y_continuous(breaks = seq(0,15,2)) +
       scale_color_gradientn(name = "Interval \nreduction \n(%)",colors =  rev(brewer.pal(11,"Spectral")[c(1,2,3,5,8,10,11)])) +
       theme_light(base_family = "Avenir Next") +
       theme(plot.title = element_text(size = 11),
             text=element_text(size=11),
             axis.text=element_text(size=10),
             axis.title.y = element_text(margin = ggplot2::margin(r=10)),
             plot.margin = unit(c(0.5,0.75,0.5,0.5),"cm")
       ) +
       xlab("Seroconversion interval size (days)") +
       ylab("Estimated peak level (log2 dilution)")

lm.peaklevel.and.interval.size = brm(log(toi.information.gained.95cri.perc) ~ scale(peak.titer.estimated.mean.pomona) + scale(interval.size),data = model.outputs)

3.10.11 Estimated decay, estimated peak, interval size

plot.interval.decay = ggplot(model.outputs,aes(x = interval.size, y = decay.rate.estimated.mean.pomona,color = 100*toi.information.gained.95cri.perc)) +
       geom_point(size = 1) +
       #scale_y_continuous(breaks = seq(0,15,2)) +
       scale_color_gradientn(name = "Interval \nreduction \n(%)",colors =  rev(brewer.pal(11,"Spectral")[c(1,2,3,5,8,10,11)])) +
       theme_light(base_family = "Avenir Next") +
       theme(plot.title = element_text(size = 11),
             text=element_text(size=11),
             axis.text=element_text(size=10),
             axis.title.y = element_text(margin = ggplot2::margin(r=10)),
             plot.margin = unit(c(0.5,0.75,0.5,0.5),"cm"),
             legend.position = 'none'
       ) +
       ylab("Estimated decay rate (1/day)") +
       xlab("Infection window (days)")

plot.interval.peak = ggplot(model.outputs,aes(x = interval.size, y = peak.titer.estimated.mean.pomona,color = 100*toi.information.gained.95cri.perc)) +
       geom_point(size = 1) +
       scale_y_continuous(breaks = seq(0,15,2)) +
       scale_color_gradientn(name = "Interval \nreduction \n(%)",colors =  rev(brewer.pal(11,"Spectral")[c(1,2,3,5,8,10,11)])) +
       theme_light(base_family = "Avenir Next") +
       theme(plot.title = element_text(size = 11),
             text=element_text(size=11),
             axis.text=element_text(size=10),
             axis.title.y = element_text(margin = ggplot2::margin(r=10)),
             plot.margin = unit(c(0.5,0.75,0.5,0.5),"cm"),
             legend.position = 'none'
       ) +
       xlab("Infection window (days)") +
       ylab("Estimated peak level \n(log2 dilution)")

plot.interval.firstpos = ggplot(model.outputs,aes(x = interval.size, y = first.pos.level,color = 100*toi.information.gained.95cri.perc)) +
       geom_point(size = 1) +
       scale_y_continuous(breaks = seq(0,15,2)) +
       scale_color_gradientn(name = "Interval \nreduction \n(%)",colors =  rev(brewer.pal(11,"Spectral")[c(1,2,3,5,8,10,11)])) +
       theme_light(base_family = "Avenir Next") +
       theme(plot.title = element_text(size = 11),
             text=element_text(size=11),
             axis.text=element_text(size=10),
             axis.title.y = element_text(margin = ggplot2::margin(r=10)),
             plot.margin = unit(c(0.5,0.75,0.5,0.5),"cm"),
             legend.position = 'none'
       ) +
       xlab("Infection window (days)") +
       ylab("First positive Pomona sample \nlevel (log2 dilution)")



plot.firstpos.decay = ggplot(model.outputs,aes(x = decay.rate.estimated.mean.pomona, y = first.pos.level,color = 100*toi.information.gained.95cri.perc)) +
       geom_point(size = 1) +
       scale_y_continuous(breaks = seq(0,15,2)) +
       scale_color_gradientn(name = "Interval \nreduction \n(%)",colors =  rev(brewer.pal(11,"Spectral")[c(1,2,3,5,8,10,11)])) +
       theme_light(base_family = "Avenir Next") +
       theme(plot.title = element_text(size = 11),
             text=element_text(size=11),
             axis.text=element_text(size=10),
             axis.title.y = element_text(margin = ggplot2::margin(r=10)),
             plot.margin = unit(c(0.5,0.75,0.5,0.5),"cm")
       ) +
       xlab("Estimated decay rate (1/day)") +
       ylab("First positive Pomona sample \nlevel (log2 dilution)")


plot.covariates.reduction = plot.interval.decay + plot.interval.firstpos + plot.firstpos.decay

plot.covariates.reduction

3.10.12 Number of data points and first positive level

ggplot(model.outputs,aes(x = number.of.datapoints, y = first.pos.level,color = 100*toi.information.gained.95cri.perc)) +
       geom_jitter(size = 1,width=0.1) +
       scale_x_continuous(breaks = 0:10) +
       scale_y_continuous(breaks = 0:15) +
       scale_color_gradientn(name = "Interval \nreduction \n(%)",colors =  rev(brewer.pal(11,"Spectral")[c(1,2,3,5,8,10,11)])) +
       theme_light(base_family = "Avenir Next") +
       theme(plot.title = element_text(size = 11),
             text=element_text(size=11),
             axis.text=element_text(size=10),
             axis.title.y = element_text(margin = ggplot2::margin(r=10)),
             plot.margin = unit(c(0.5,0.75,0.5,0.5),"cm")
       ) +
       xlab("Number of positive datapoints") +
       ylab("First positive sample level \n(log2 dilution)")

#lm.number.of.datapoints.and.first.positive.level = lm(log(toi.information.gained.95cri.perc) ~ scale(number.of.datapoints) + scale(first.pos.level),data = model.outputs)
lm.number.of.datapoints.and.first.positive.level = brm(log(toi.information.gained.95cri.perc) ~ scale(number.of.datapoints) + scale(first.pos.level),data = model.outputs)

4 All covariates

lm.all = brm(log(toi.information.gained.95cri.perc) ~ scale(first.pos.level) + scale(decay.rate.estimated.mean.pomona) + scale(peak.titer.estimated.mean.pomona) + scale(interval.size) + scale(datarange) + scale(number.of.datapoints), data = model.outputs)

4.0.1 Model comparison

4.0.1.1 Univariate models P values

# frequentist:    

# lm.interval.size
# lm.datarange
# lm.number.of.datapoints
# lm.estimated.peak.level
# lm.first.pos.level
# lm.decay.rate
# lm.decay.rate.and.estimated.peak.level
# lm.decay.rate.and.first.positive.level
# lm.number.of.datapoints.and.first.positive.level


# model.stats = data.frame(
#        variables = c("interval size","datarange","number of datapoints","estimated peak","first pos level","decay rate"),
#        Pval = c(anova(lm.interval.size)$Pr[1],anova(lm.datarange)$Pr[1],anova(lm.number.of.datapoints)$Pr[1],anova(lm.estimated.peak.level)$Pr[1],anova(lm.first.pos.level)$Pr[1],anova(lm.decay.rate)$Pr[1]),
#        Fval = round(c(anova(lm.interval.size)$F[1],anova(lm.datarange)$F[1],anova(lm.number.of.datapoints)$F[1],anova(lm.estimated.peak.level)$F[1],anova(lm.first.pos.level)$F[1],anova(lm.decay.rate)$F[1]),2),
#        df = c(anova(lm.interval.size)$Df[2],anova(lm.datarange)$Df[2],anova(lm.number.of.datapoints)$Df[2],anova(lm.estimated.peak.level)$Df[2],anova(lm.first.pos.level)$Df[2],anova(lm.decay.rate)$Df[2]),
#        Effect.estimate.exp = exp(round(c(lm.interval.size$coefficients[2],lm.datarange$coefficients[2],lm.number.of.datapoints$coefficients[2],lm.estimated.peak.level$coefficients[2],lm.first.pos.level$coefficients[2],lm.decay.rate$coefficients[2]),4)),
#        AIC = round(AIC(lm.interval.size,lm.datarange,lm.number.of.datapoints,lm.estimated.peak.level,lm.first.pos.level,lm.decay.rate),1))
# 
# model.stats$Pval = round(model.stats$Pval,6)



# bayesian models:

model.stats = data.frame(
       variables = c("interval size","datarange","number of datapoints","estimated peak","first pos level","decay rate"),
       LOOIC.est = round(c(loo(lm.interval.size)$estimates[3,1],
                           loo(lm.datarange)$estimates[3,1],
                           loo(lm.number.of.datapoints)$estimates[3,1],
                           loo(lm.estimated.peak.level)$estimates[3,1],
                           loo(lm.first.pos.level)$estimates[3,1],
                           loo(lm.decay.rate)$estimates[3,1]),1),
       LOOIC.se = round(c(loo(lm.interval.size)$estimates[3,2],
                          loo(lm.datarange)$estimates[3,2],
                          loo(lm.number.of.datapoints)$estimates[3,2],
                          loo(lm.estimated.peak.level)$estimates[3,2],
                          loo(lm.first.pos.level)$estimates[3,2],
                          loo(lm.decay.rate)$estimates[3,2]),1),
       Effect.estimate.exp = round(c(exp(summary(lm.interval.size)$fixed[2,1]),
                                     exp(summary(lm.datarange)$fixed[2,1]),
                                     exp(summary(lm.number.of.datapoints)$fixed[2,1]),
                                     exp(summary(lm.estimated.peak.level)$fixed[2,1]),
                                     exp(summary(lm.first.pos.level)$fixed[2,1]),
                                     exp(summary(lm.decay.rate)$fixed[2,1])),2),
       Effect.estimate.95lo.exp = round(c(exp(summary(lm.interval.size)$fixed[2,3]),
                                          exp(summary(lm.datarange)$fixed[2,3]),
                                          exp(summary(lm.number.of.datapoints)$fixed[2,3]),
                                          exp(summary(lm.estimated.peak.level)$fixed[2,3]),
                                          exp(summary(lm.first.pos.level)$fixed[2,3]),
                                          exp(summary(lm.decay.rate)$fixed[2,3])),2),
       Effect.estimate.95hi.exp = round(c(exp(summary(lm.interval.size)$fixed[2,4]),
                                          exp(summary(lm.datarange)$fixed[2,4]),
                                          exp(summary(lm.number.of.datapoints)$fixed[2,4]),
                                          exp(summary(lm.estimated.peak.level)$fixed[2,4]),
                                          exp(summary(lm.first.pos.level)$fixed[2,4]),
                                          exp(summary(lm.decay.rate)$fixed[2,4])),2))
kbl(model.stats) %>%
       kable_classic(bootstrap_options  =  c("striped", "hover","condensed"), full_width=F,html_font="Cambria",fixed_thead=T)
variables LOOIC.est LOOIC.se Effect.estimate.exp Effect.estimate.95lo.exp Effect.estimate.95hi.exp
interval size 297.4 42.3 1.14 1.10 1.19
datarange 328.9 42.3 1.05 1.00 1.10
number of datapoints 328.5 43.0 1.05 1.00 1.10
estimated peak 322.3 38.7 1.08 1.03 1.13
first pos level 332.9 42.9 1.01 0.96 1.06
decay rate 260.9 41.5 1.21 1.16 1.26

4.0.1.2 LOOIC values

All for 95% CrI

lm.interval.size.and.decay = brm(log(toi.information.gained.95cri.perc) ~ scale(interval.size) + scale(decay.rate.estimated.mean.pomona),data = model.outputs)

lm.interval.size.and.peak = brm(log(toi.information.gained.95cri.perc) ~ scale(interval.size) + scale(peak.titer.estimated.mean.pomona),data = model.outputs)

lm.interval.size.and.peak.and.decay = brm(log(toi.information.gained.95cri.perc) ~ scale(interval.size) + scale(peak.titer.estimated.mean.pomona) + scale(decay.rate.estimated.mean.pomona),data = model.outputs)

lm.number.of.datapoints.and.peak.and.decay = brm(log(toi.information.gained.95cri.perc) ~ scale(number.of.datapoints) + scale(peak.titer.estimated.mean.pomona) + scale(decay.rate.estimated.mean.pomona),data = model.outputs)

lm.number.of.datapoints.and.peak = brm(log(toi.information.gained.95cri.perc) ~ scale(number.of.datapoints) + scale(peak.titer.estimated.mean.pomona),data = model.outputs)


model.stats = data.frame(
       variables = c("interval size",
                     "datarange",
                     "number of datapoints",
                     "estimated peak",
                     "first pos level",
                     "decay rate",
                     "decay rate + estimated peak",
                     "decay rate + first pos",
                     "N datapoints + peak",
                     "N datapoints + decay + peak",
                     "interval size + decay rate",
                     "interval size + estimated peak",
                     "interval size + decay + peak",
                     "all variables"),
       LOOIC.est = round(c(loo(lm.interval.size)$estimates[3,1],
                           loo(lm.datarange)$estimates[3,1],
                           loo(lm.number.of.datapoints)$estimates[3,1],
                           loo(lm.estimated.peak.level)$estimates[3,1],
                           loo(lm.first.pos.level)$estimates[3,1],
                           loo(lm.decay.rate)$estimates[3,1],
                           loo(lm.decay.rate.and.estimated.peak.level)$estimates[3,1],
                           loo(lm.decay.rate.and.first.positive.level)$estimates[3,1],
                           loo(lm.number.of.datapoints.and.peak)$estimates[3,1],
                           loo(lm.number.of.datapoints.and.peak.and.decay)$estimates[3,1],
                           loo(lm.interval.size.and.decay)$estimates[3,1],
                           loo(lm.interval.size.and.peak)$estimates[3,1],
                           loo(lm.interval.size.and.peak.and.decay)$estimates[3,1],
                           loo(lm.all)$estimates[3,1]),1),
       LOOIC.se = round(c(loo(lm.interval.size)$estimates[3,2],
                          loo(lm.datarange)$estimates[3,2],
                          loo(lm.number.of.datapoints)$estimates[3,2],
                          loo(lm.estimated.peak.level)$estimates[3,2],
                          loo(lm.first.pos.level)$estimates[3,2],
                          loo(lm.decay.rate)$estimates[3,2],
                          loo(lm.decay.rate.and.estimated.peak.level)$estimates[3,2],
                          loo(lm.decay.rate.and.first.positive.level)$estimates[3,2],
                          loo(lm.number.of.datapoints.and.peak)$estimates[3,2],
                          loo(lm.number.of.datapoints.and.peak.and.decay)$estimates[3,2],
                          loo(lm.interval.size.and.decay)$estimates[3,2],
                          loo(lm.interval.size.and.peak)$estimates[3,2],
                          loo(lm.interval.size.and.peak.and.decay)$estimates[3,2],
                          loo(lm.all)$estimates[3,2]),1))

model.stats.ordered = model.stats %>%
       arrange(LOOIC.est)
kbl(model.stats.ordered) %>%
       kable_classic(bootstrap_options  =  c("striped", "hover","condensed"), full_width=F,html_font="Cambria",fixed_thead=T)
variables LOOIC.est LOOIC.se
interval size + decay + peak 156.8 31.5
all variables 158.9 31.9
interval size + decay rate 210.1 41.0
N datapoints + decay + peak 228.4 34.2
decay rate + estimated peak 230.4 33.9
decay rate 260.9 41.5
decay rate + first pos 262.8 41.6
interval size + estimated peak 281.9 36.3
interval size 297.4 42.3
N datapoints + peak 322.1 39.1
estimated peak 322.3 38.7
number of datapoints 328.5 43.0
datarange 328.9 42.3
first pos level 332.9 42.9

4.1 Model output table


kbl(model.outputs) %>%
       kable_classic(bootstrap_options  =  c("striped", "hover","condensed"), full_width=F,html_font="Cambria",fixed_thead=T)
id pittag toi.mid.interval toi.estimated.mean toi.estimated.median toi.estimated.maxdens toi.estimated.mean.95ci.low toi.estimated.mean.95ci.high toi.estimated.maxdens.95hdi.low toi.estimated.maxdens.95hdi.high toi.information.gained.95cri.perc toi.information.gained.80cri.perc toi.information.gained.50cri.perc kl.divergence peak.titer.estimated.mean.pomona peak.titer.estimated.median.pomona peak.titer.estimated.maxdens.pomona peak.titer.estimated.mean.95ci.low.pomona peak.titer.estimated.mean.95ci.high.pomona peak.titer.estimated.maxdens.95hdi.low.pomona peak.titer.estimated.maxdens.95hdi.high.pomona decay.rate.estimated.mean.pomona decay.rate.estimated.median.pomona decay.rate.estimated.maxdens.pomona decay.rate.estimated.mean.95ci.low.pomona decay.rate.estimated.mean.95ci.high.pomona decay.rate.estimated.maxdens.95hdi.low.pomona decay.rate.estimated.maxdens.95hdi.high.pomona peak.titer.estimated.mean.aut peak.titer.estimated.median.aut peak.titer.estimated.maxdens.aut peak.titer.estimated.mean.95ci.low.aut peak.titer.estimated.mean.95ci.high.aut peak.titer.estimated.maxdens.95hdi.low.aut peak.titer.estimated.maxdens.95hdi.high.aut decay.rate.estimated.mean.aut decay.rate.estimated.median.aut decay.rate.estimated.maxdens.aut decay.rate.estimated.mean.95ci.low.aut decay.rate.estimated.mean.95ci.high.aut decay.rate.estimated.maxdens.95hdi.low.aut decay.rate.estimated.maxdens.95hdi.high.aut interval.size datarange number.of.datapoints first.pos.level
1 00141 -136 -160 -171 -260 -268 -178 -272 -25 0.0919765 0.3052838 0.6281800 0.0762514 4.3 4.2 4.2 2.4 4.2 2.4 6.3 0.000987 0.0009830 0.000989 0.000357 0.000963 0.000345 0.001626 4.5 4.4 4.5 2.1 4.4 2.1 6.9 0.000660 0.0006560 0.000629 0.000105 0.000639 0.000104 0.001227 272 586 2 3
2 00701 -362 -335 -325 -287 -692 -340 -665 -4 0.0880626 0.2778865 0.5772994 0.0367747 7.0 6.9 6.6 5.0 6.8 4.8 9.4 0.000879 0.0008680 0.000842 0.000488 0.000854 0.000470 0.001310 7.5 7.3 7.0 5.2 7.3 5.0 10.3 0.000756 0.0007490 0.000751 0.000312 0.000734 0.000302 0.001235 725 1093 4 5
3 00978 -115 -132 -140 -217 -226 -146 -230 -20 0.0861057 0.2896282 0.6086106 0.0573983 4.8 4.8 4.7 3.2 4.7 3.1 6.7 0.001032 0.0010280 0.001019 0.000433 0.001009 0.000421 0.001650 5.1 5.1 4.9 2.9 5.0 2.9 7.4 0.000659 0.0006560 0.000672 0.000107 0.000639 0.000106 0.001221 230 629 3 4
4 00D05 -126 -123 -122 -17 -245 -128 -241 -6 0.0665362 0.2230920 0.5205479 0.0082026 8.9 8.9 8.9 7.4 8.9 7.4 10.5 0.000616 0.0006100 0.000597 0.000411 0.000603 0.000401 0.000845 9.9 9.9 9.8 8.3 9.8 8.2 11.7 0.000398 0.0003960 0.000387 0.000235 0.000390 0.000231 0.000569 252 2038 5 7
5 01334 -247 -238 -235 -177 -478 -246 -468 -7 0.0665362 0.2348337 0.5342466 0.0115655 7.3 7.2 6.9 5.2 7.1 5.1 9.6 0.000772 0.0007660 0.000758 0.000216 0.000748 0.000210 0.001348 7.8 7.7 7.5 5.3 7.6 5.2 10.6 0.000660 0.0006560 0.000641 0.000104 0.000639 0.000100 0.001223 494 380 2 6
6 01520 -243 -283 -300 -473 -478 -311 -486 -47 0.0958904 0.3091977 0.6183953 0.0668984 5.9 5.8 5.7 3.8 5.8 3.7 8.3 0.000862 0.0008600 0.000848 0.000258 0.000840 0.000247 0.001479 6.3 6.2 6.1 3.7 6.1 3.6 9.1 0.000660 0.0006570 0.000676 0.000110 0.000640 0.000105 0.001224 486 360 2 4
7 01619 -148 -169 -179 -281 -290 -185 -295 -25 0.0861057 0.2876712 0.6046967 0.0532088 5.2 5.1 5.0 3.4 5.1 3.3 7.2 0.000900 0.0008960 0.000894 0.000323 0.000878 0.000312 0.001493 5.5 5.5 5.5 3.3 5.4 3.2 7.9 0.000660 0.0006570 0.000673 0.000109 0.000640 0.000099 0.001219 295 699 3 4
8 01744 -180 -204 -215 -348 -354 -223 -361 -30 0.0821918 0.2818004 0.5929550 0.0433605 5.6 5.6 5.5 4.1 5.5 4.0 7.3 0.000926 0.0009160 0.000858 0.000433 0.000898 0.000417 0.001462 6.0 5.9 5.9 4.3 5.9 4.2 7.9 0.000629 0.0006220 0.000601 0.000216 0.000608 0.000203 0.001065 361 1052 3 4
9 02107 -178 -123 -106 -15 -321 -112 -295 0 0.1702544 0.4266145 0.7005871 0.2280786 9.4 9.3 9.2 7.8 9.2 7.7 11.3 0.001117 0.0011090 0.001085 0.000783 0.001097 0.000770 0.001480 10.3 10.2 10.0 8.5 10.1 8.4 12.4 0.000677 0.0006730 0.000675 0.000406 0.000664 0.000396 0.000962 355 1092 4 7
10 03466 -243 -241 -239 -171 -472 -250 -472 -16 0.0626223 0.2211350 0.5244618 0.0076460 6.6 6.5 6.3 5.1 6.5 5.0 8.4 0.000577 0.0005730 0.000586 0.000138 0.000559 0.000131 0.001032 7.1 7.0 6.8 5.4 7.0 5.3 9.1 0.000522 0.0005230 0.000513 0.000040 0.000508 0.000042 0.001004 486 694 3 4
11 03662 -194 -234 -253 -375 -383 -261 -389 -37 0.0939335 0.3209393 0.6477495 0.0979728 1.5 1.5 1.5 -0.1 1.4 -0.1 3.1 0.001056 0.0010510 0.001045 0.000404 0.001030 0.000389 0.001728 1.4 1.4 1.4 -0.2 1.3 -0.2 3.1 0.000721 0.0007150 0.000731 0.000195 0.000698 0.000182 0.001273 389 2116 4 4
12 0433A -237 -263 -274 -460 -465 -285 -473 -37 0.0802348 0.2739726 0.5772994 0.0335181 5.7 5.7 5.5 4.0 5.6 3.9 7.7 0.000883 0.0008680 0.000830 0.000458 0.000853 0.000431 0.001361 6.0 6.0 5.8 4.1 5.9 4.0 8.2 0.000704 0.0007000 0.000694 0.000173 0.000683 0.000159 0.001245 474 1043 3 3
13 04471 -271 -351 -376 -523 -534 -386 -542 -87 0.1604697 0.4148728 0.6927593 0.2054997 5.6 5.6 5.5 4.0 5.5 3.9 7.5 0.001024 0.0010110 0.001001 0.000517 0.000994 0.000496 0.001574 6.0 6.0 5.9 4.3 5.9 4.2 8.0 0.000445 0.0004390 0.000422 0.000041 0.000426 0.000029 0.000870 542 0 1 2
14 04703 -84 -124 -137 -160 -168 -140 -169 -34 0.1996086 0.5303327 0.8003914 0.5252067 7.3 7.3 7.4 5.5 7.3 5.5 9.1 0.001262 0.0012530 0.001222 0.000518 0.001229 0.000501 0.002031 8.5 8.5 8.6 6.6 8.5 6.6 10.5 0.000395 0.0004050 0.000411 -0.000229 0.000387 -0.000209 0.000979 169 2533 8 7
15 04953 -141 -119 -111 -16 -269 -117 -256 0 0.0939335 0.3052838 0.6086106 0.0608924 8.2 8.2 8.1 6.7 8.1 6.6 10.0 0.001093 0.0010840 0.001069 0.000803 0.001073 0.000786 0.001419 8.9 8.9 8.8 7.2 8.8 7.1 10.8 0.000746 0.0007410 0.000718 0.000432 0.000730 0.000421 0.001077 282 1359 5 5
16 05735 -112 -121 -125 -205 -218 -131 -221 -15 0.0763209 0.2544031 0.5636008 0.0243367 5.8 5.8 5.8 4.5 5.8 4.5 7.2 0.001087 0.0010770 0.001060 0.000654 0.001062 0.000634 0.001555 6.2 6.2 6.2 4.8 6.2 4.8 7.8 0.000534 0.0005300 0.000533 0.000185 0.000519 0.000177 0.000898 223 2285 4 7
17 05824 -72 -69 -67 -15 -140 -71 -137 -3 0.0724070 0.2367906 0.5401174 0.0145830 8.4 8.4 8.4 7.1 8.4 7.1 9.8 0.000725 0.0007160 0.000707 0.000455 0.000707 0.000437 0.001027 9.2 9.2 9.2 7.7 9.1 7.6 10.8 0.000558 0.0005530 0.000529 0.000180 0.000541 0.000169 0.000952 144 1825 4 7
18 06263 -253 -182 -160 -17 -463 -169 -428 0 0.1545988 0.4070450 0.6829746 0.1885405 8.5 8.4 8.2 6.7 8.3 6.6 10.5 0.000934 0.0009190 0.000898 0.000618 0.000908 0.000595 0.001303 9.2 9.1 8.9 7.1 9.0 7.0 11.5 0.000635 0.0006310 0.000621 0.000106 0.000615 0.000103 0.001174 506 406 2 5
19 06436 -228 -248 -257 -394 -445 -268 -453 -34 0.0782779 0.2622309 0.5655577 0.0256822 6.5 6.4 6.2 4.4 6.3 4.3 8.8 0.000866 0.0008630 0.000880 0.000283 0.000844 0.000273 0.001464 6.9 6.8 6.6 4.4 6.7 4.3 9.7 0.000659 0.0006560 0.000623 0.000107 0.000639 0.000106 0.001223 455 1060 4 3
20 06441 -211 -251 -269 -409 -416 -279 -422 -40 0.0939335 0.3111546 0.6379648 0.0853471 4.6 4.5 4.4 3.1 4.5 3.0 6.3 0.000712 0.0007050 0.000706 0.000242 0.000690 0.000230 0.001208 4.6 4.5 4.3 2.8 4.5 2.7 6.6 0.000873 0.0008650 0.000858 0.000387 0.000849 0.000373 0.001391 422 351 2 5
21 06978 -240 -284 -301 -453 -472 -311 -481 -50 0.1037182 0.3268102 0.6242661 0.0811291 6.1 6.0 5.8 3.8 5.9 3.7 8.7 0.001093 0.0010880 0.001045 0.000487 0.001068 0.000479 0.001724 6.5 6.4 6.1 3.7 6.3 3.6 9.5 0.000660 0.0006560 0.000653 0.000110 0.000639 0.000106 0.001231 481 736 3 8
22 07127 -195 -143 -123 -13 -362 -131 -339 0 0.1311155 0.3816047 0.6829746 0.1662341 8.4 8.3 8.2 6.8 8.2 6.7 10.1 0.000831 0.0008230 0.000817 0.000436 0.000810 0.000422 0.001254 8.9 8.9 8.8 7.2 8.8 7.1 10.9 0.000641 0.0006370 0.000631 0.000204 0.000623 0.000194 0.001087 390 2184 5 3
23 07478 -364 -444 -468 -605 -716 -482 -729 -100 0.1369863 0.3698630 0.6418787 0.1278200 6.0 5.9 5.8 3.8 5.8 3.6 8.5 0.001105 0.0010910 0.001054 0.000671 0.001076 0.000646 0.001587 6.4 6.3 5.9 3.9 6.2 3.7 9.2 0.000694 0.0006900 0.000697 0.000184 0.000674 0.000180 0.001220 729 578 2 6
24 07516 -311 -241 -217 -58 -580 -229 -543 0 0.1272016 0.3659491 0.6497065 0.1266943 7.8 7.7 7.5 6.0 7.6 5.8 9.9 0.000764 0.0007540 0.000745 0.000308 0.000739 0.000287 0.001257 8.4 8.2 7.9 6.3 8.2 6.2 10.8 0.000699 0.0006920 0.000677 0.000291 0.000679 0.000282 0.001134 622 365 2 5
25 07620 -255 -276 -285 -323 -498 -296 -507 -36 0.0763209 0.2641879 0.5596869 0.0243686 6.5 6.4 6.2 4.4 6.4 4.3 9.0 0.000875 0.0008720 0.000872 0.000292 0.000853 0.000286 0.001470 7.0 6.9 6.7 4.4 6.8 4.3 9.9 0.000659 0.0006560 0.000664 0.000108 0.000639 0.000103 0.001226 510 351 2 9
26 07906 -64 -60 -58 -21 -125 -61 -121 -2 0.0782779 0.2504892 0.5577299 0.0222483 8.2 8.2 8.3 6.5 8.2 6.5 10.1 0.001158 0.0011520 0.001142 0.000583 0.001133 0.000568 0.001758 8.9 8.9 8.8 6.7 8.8 6.7 11.1 0.000661 0.0006570 0.000649 0.000109 0.000641 0.000101 0.001217 129 733 3 8
27 11709 -76 -72 -69 -15 -148 -73 -144 -2 0.0743640 0.2465753 0.5518591 0.0189306 8.4 8.4 8.3 6.8 8.3 6.7 10.1 0.000813 0.0008080 0.000792 0.000385 0.000795 0.000378 0.001260 9.0 9.0 9.0 7.0 8.9 6.9 11.2 0.000660 0.0006550 0.000652 0.000109 0.000638 0.000107 0.001227 153 735 3 7
28 11726 -77 -75 -74 -14 -150 -78 -147 -4 0.0724070 0.2309198 0.5264188 0.0117253 7.8 7.7 7.7 6.2 7.7 6.1 9.4 0.000735 0.0007320 0.000740 0.000297 0.000718 0.000291 0.001188 8.4 8.3 8.3 6.3 8.3 6.3 10.5 0.000659 0.0006560 0.000633 0.000110 0.000639 0.000107 0.001224 154 2559 6 4
29 12672 -179 -187 -190 -303 -350 -199 -354 -18 0.0626223 0.2309198 0.5342466 0.0105575 6.2 6.2 6.1 4.9 6.1 4.8 7.7 0.000618 0.0006070 0.000582 0.000370 0.000599 0.000353 0.000906 6.5 6.5 6.5 4.9 6.4 4.9 8.3 0.000623 0.0006210 0.000626 0.000135 0.000606 0.000127 0.001114 358 1172 3 5
30 13062 -192 -194 -195 -246 -375 -205 -376 -14 0.0587084 0.2133072 0.5127202 0.0061715 6.0 6.0 6.0 4.8 5.9 4.7 7.4 0.000443 0.0004290 0.000402 0.000055 0.000416 0.000026 0.000878 6.3 6.3 6.2 4.9 6.2 4.8 7.9 0.000374 0.0003650 0.000335 -0.000008 0.000352 -0.000022 0.000785 385 536 3 3
31 13737 -330 -367 -380 -484 -645 -394 -658 -58 0.0900196 0.2876712 0.5772994 0.0418443 6.1 6.0 5.9 4.3 6.0 4.2 8.3 0.000801 0.0007970 0.000800 0.000301 0.000780 0.000293 0.001323 6.5 6.4 6.2 4.5 6.3 4.3 8.9 0.000628 0.0006260 0.000616 0.000134 0.000611 0.000134 0.001129 659 435 2 7
32 14353 -310 -454 -495 -609 -616 -504 -621 -145 0.2328767 0.5440313 0.7945205 0.5000178 3.4 3.4 3.1 1.3 3.3 1.2 5.6 0.001230 0.0012200 0.001160 0.000634 0.001200 0.000620 0.001867 3.6 3.5 3.3 1.5 3.4 1.3 5.9 0.000600 0.0005940 0.000577 0.000132 0.000579 0.000123 0.001091 621 356 2 8
33 14732 -290 -192 -164 -16 -512 -174 -466 0 0.1956947 0.4598826 0.7162427 0.2786456 8.1 8.0 7.8 6.3 8.0 6.2 10.3 0.001034 0.0010230 0.001007 0.000530 0.001006 0.000508 0.001583 8.8 8.7 8.5 6.8 8.6 6.6 11.3 0.000780 0.0007730 0.000779 0.000349 0.000758 0.000332 0.001239 580 1113 3 7
34 14A0D -76 -74 -73 -24 -149 -77 -146 -4 0.0724070 0.2309198 0.5342466 0.0125687 7.7 7.6 7.5 5.9 7.6 5.9 9.5 0.001080 0.0010740 0.001069 0.000498 0.001056 0.000485 0.001683 8.2 8.2 8.0 6.1 8.1 6.0 10.5 0.000660 0.0006580 0.000669 0.000110 0.000641 0.000106 0.001220 153 1949 7 8
35 15627 -69 -70 -71 -92 -135 -74 -134 -6 0.0743640 0.2328767 0.5283757 0.0121930 7.9 7.8 7.8 6.5 7.8 6.5 9.3 0.001117 0.0011060 0.001097 0.000677 0.001092 0.000659 0.001598 8.6 8.6 8.5 7.1 8.5 7.0 10.2 0.000558 0.0005520 0.000539 0.000226 0.000541 0.000214 0.000916 138 756 3 4
36 15660 -238 -192 -172 -22 -451 -182 -428 0 0.0998043 0.3209393 0.6379648 0.0884005 9.3 9.2 9.1 8.0 9.2 7.9 10.7 0.000338 0.0003360 0.000331 0.000192 0.000332 0.000188 0.000491 10.1 10.1 10.0 8.7 10.0 8.6 11.8 0.000281 0.0002800 0.000283 0.000110 0.000274 0.000108 0.000459 475 90 2 9
37 15690 -246 -288 -304 -463 -483 -315 -492 -47 0.0958904 0.3111546 0.6164384 0.0715822 6.0 5.9 5.6 3.8 5.8 3.7 8.4 0.000935 0.0009300 0.000916 0.000386 0.000912 0.000371 0.001493 6.4 6.3 6.1 3.8 6.2 3.6 9.3 0.000660 0.0006570 0.000614 0.000109 0.000639 0.000103 0.001222 492 1462 5 9
38 15718 -162 -116 -98 -11 -302 -105 -282 0 0.1291585 0.3894325 0.6927593 0.1833299 9.6 9.6 9.5 8.0 9.5 7.9 11.4 0.000736 0.0007330 0.000704 0.000064 0.000711 0.000050 0.001415 10.4 10.3 10.2 8.3 10.3 8.2 12.7 0.000660 0.0006570 0.000654 0.000108 0.000640 0.000103 0.001224 324 1477 5 8
39 15738 -182 -112 -91 -12 -320 -97 -291 0 0.2035225 0.4814090 0.7475538 0.3462025 9.5 9.5 9.3 8.0 9.4 7.9 11.3 0.000856 0.0008490 0.000836 0.000582 0.000840 0.000568 0.001155 10.3 10.2 10.1 8.5 10.2 8.4 12.3 0.000663 0.0006590 0.000640 0.000127 0.000643 0.000124 0.001211 365 1903 4 4
40 15748 -176 -147 -135 -16 -335 -143 -318 0 0.0939335 0.3033268 0.6164384 0.0646188 8.7 8.6 8.5 6.9 8.6 6.8 10.6 0.000671 0.0006660 0.000669 0.000379 0.000656 0.000370 0.000977 9.4 9.3 9.1 7.1 9.2 7.0 11.8 0.000660 0.0006570 0.000665 0.000113 0.000640 0.000106 0.001224 351 1482 6 6
41 15755 -243 -257 -264 -471 -475 -276 -483 -26 0.0606654 0.2328767 0.5440313 0.0127823 5.8 5.8 5.6 4.3 5.7 4.2 7.6 0.000306 0.0002950 0.000272 0.000006 0.000285 -0.000012 0.000646 6.2 6.2 6.0 4.2 6.1 4.1 8.4 0.000660 0.0006570 0.000663 0.000111 0.000640 0.000108 0.001223 486 763 3 3
42 15765 -236 -215 -206 -120 -453 -217 -438 -2 0.0743640 0.2622309 0.5636008 0.0246630 7.8 7.7 7.5 5.9 7.6 5.8 10.0 0.000739 0.0007330 0.000727 0.000445 0.000724 0.000433 0.001055 8.3 8.3 8.2 6.0 8.2 5.9 11.0 0.000659 0.0006550 0.000637 0.000112 0.000638 0.000106 0.001220 471 1419 4 4
43 15781 -362 -479 -514 -700 -715 -527 -724 -119 0.1643836 0.4383562 0.7103718 0.2450812 5.5 5.5 5.4 2.9 5.4 2.8 8.5 0.001014 0.0010100 0.000993 0.000450 0.000992 0.000436 0.001584 5.9 5.8 5.6 2.8 5.7 2.6 9.3 0.000659 0.0006550 0.000644 0.000108 0.000638 0.000105 0.001221 724 831 3 7
44 15803 -327 -388 -405 -488 -640 -417 -654 -87 0.1330724 0.3542074 0.6242661 0.1090602 6.6 6.5 6.5 4.2 6.4 4.0 9.2 0.001287 0.0012750 0.001278 0.000819 0.001259 0.000796 0.001799 7.1 7.0 6.8 4.4 6.9 4.3 10.0 0.000917 0.0009080 0.000885 0.000543 0.000895 0.000523 0.001328 654 381 2 5
45 15816 -182 -153 -142 -38 -346 -150 -328 0 0.0978474 0.3131115 0.6125245 0.0658075 8.2 8.2 8.1 6.5 8.1 6.5 10.1 0.001038 0.0010270 0.001011 0.000619 0.001013 0.000600 0.001490 8.9 8.9 8.7 7.0 8.8 6.9 11.1 0.000636 0.0006330 0.000639 0.000098 0.000617 0.000090 0.001181 364 1836 2 8
46 16031 -232 -247 -251 -274 -453 -261 -461 -34 0.0802348 0.2661448 0.5616438 0.0249342 7.2 7.2 7.1 5.3 7.1 5.2 9.5 0.001013 0.0010060 0.001000 0.000469 0.000988 0.000453 0.001580 7.9 7.8 7.6 5.6 7.7 5.5 10.4 0.000519 0.0005190 0.000523 0.000061 0.000504 0.000062 0.000978 465 463 2 4
47 16039 -250 -214 -198 -17 -478 -210 -458 0 0.0821918 0.2837573 0.6027397 0.0497771 8.8 8.8 8.6 6.9 8.7 6.9 10.8 0.000357 0.0003470 0.000343 0.000125 0.000339 0.000106 0.000624 9.5 9.5 9.5 7.2 9.4 7.1 11.9 0.000658 0.0006550 0.000656 0.000110 0.000638 0.000102 0.001216 499 1806 6 4
48 16042 -176 -206 -219 -338 -346 -226 -352 -32 0.0919765 0.3072407 0.6203523 0.0685383 5.4 5.3 5.2 3.4 5.3 3.4 7.6 0.000946 0.0009410 0.000930 0.000336 0.000922 0.000331 0.001575 5.7 5.6 5.5 3.3 5.6 3.2 8.4 0.000659 0.0006560 0.000666 0.000110 0.000638 0.000105 0.001221 352 393 2 5
49 16044 -114 -122 -126 -203 -222 -132 -225 -14 0.0724070 0.2504892 0.5557730 0.0202327 5.3 5.3 5.3 4.1 5.3 4.0 6.7 0.000877 0.0008680 0.000834 0.000452 0.000854 0.000437 0.001334 5.6 5.6 5.6 4.2 5.6 4.2 7.2 0.000513 0.0005130 0.000516 0.000108 0.000500 0.000106 0.000922 227 390 2 2
50 16055 -318 -351 -361 -479 -621 -374 -635 -57 0.0919765 0.2896282 0.5772994 0.0423542 6.6 6.5 6.3 4.2 6.4 4.1 9.4 0.000960 0.0009520 0.000936 0.000392 0.000934 0.000375 0.001547 7.1 7.0 6.7 4.2 6.9 4.1 10.3 0.000659 0.0006560 0.000661 0.000108 0.000639 0.000101 0.001221 636 1482 3 6
51 16072 -240 -306 -331 -465 -474 -340 -480 -63 0.1311155 0.3874755 0.6868885 0.1747013 4.8 4.7 4.5 2.9 4.6 2.8 7.0 0.001003 0.0009970 0.000976 0.000378 0.000978 0.000369 0.001638 5.1 5.0 4.7 2.8 4.9 2.7 7.5 0.000647 0.0006430 0.000638 0.000151 0.000627 0.000140 0.001155 480 1082 3 3
52 16076 -290 -246 -228 -69 -552 -241 -524 0 0.0978474 0.3111546 0.6066536 0.0642401 7.8 7.7 7.4 6.0 7.6 5.9 9.8 0.000701 0.0006880 0.000641 0.000371 0.000677 0.000348 0.001077 8.4 8.3 8.3 6.4 8.2 6.2 10.8 0.000633 0.0006290 0.000604 0.000117 0.000612 0.000107 0.001162 581 345 2 2
53 16081 -234 -292 -314 -456 -462 -323 -468 -58 0.1232877 0.3698630 0.6692759 0.1441829 5.4 5.3 5.2 3.3 5.2 3.2 7.8 0.001061 0.0010520 0.001049 0.000507 0.001033 0.000494 0.001650 5.7 5.7 5.5 3.2 5.6 3.0 8.6 0.000658 0.0006550 0.000641 0.000112 0.000638 0.000107 0.001217 468 729 3 7
54 16082 -292 -378 -408 -570 -578 -419 -585 -82 0.1409002 0.4011742 0.6966732 0.1951994 4.7 4.6 4.5 2.8 4.6 2.7 6.8 0.000968 0.0009640 0.000971 0.000366 0.000945 0.000358 0.001590 4.9 4.8 4.5 2.8 4.7 2.6 7.3 0.000696 0.0006920 0.000697 0.000170 0.000675 0.000168 0.001245 585 343 2 6
55 16083 -140 -134 -131 -83 -272 -138 -265 -5 0.0704501 0.2367906 0.5362035 0.0117334 7.5 7.5 7.4 5.7 7.4 5.6 9.6 0.000968 0.0009630 0.000954 0.000489 0.000947 0.000480 0.001472 8.1 8.0 8.0 5.8 8.0 5.7 10.6 0.000659 0.0006550 0.000636 0.000107 0.000639 0.000100 0.001218 280 615 2 2
56 16103 -293 -232 -209 -15 -552 -221 -521 0 0.1115460 0.3463796 0.6438356 0.1049415 7.9 7.8 7.7 6.3 7.8 6.1 10.0 0.000609 0.0006030 0.000602 0.000098 0.000586 0.000087 0.001137 8.6 8.5 8.3 6.6 8.4 6.5 10.9 0.000645 0.0006410 0.000644 0.000125 0.000626 0.000120 0.001184 586 756 4 4
57 16327 -290 -382 -415 -566 -573 -425 -580 -91 0.1565558 0.4227006 0.7142857 0.2347622 4.8 4.7 4.7 2.9 4.7 2.8 6.9 0.001050 0.0010430 0.001033 0.000479 0.001025 0.000468 0.001651 5.0 5.0 4.7 3.0 4.9 2.9 7.3 0.000615 0.0006130 0.000613 0.000130 0.000597 0.000127 0.001115 580 741 3 8
58 16329 -246 -276 -288 -450 -483 -299 -492 -41 0.0841487 0.2818004 0.5831703 0.0391324 6.0 5.9 5.7 4.3 5.9 4.2 8.1 0.000809 0.0008030 0.000799 0.000311 0.000787 0.000301 0.001329 6.4 6.3 6.2 4.4 6.3 4.3 8.8 0.000649 0.0006450 0.000646 0.000177 0.000630 0.000168 0.001134 493 557 3 3
59 16330 -196 -164 -151 -44 -372 -160 -351 0 0.1037182 0.3189824 0.6164384 0.0717558 7.9 7.8 7.6 5.8 7.7 5.7 10.3 0.001139 0.0011290 0.001095 0.000637 0.001112 0.000617 0.001676 8.5 8.4 8.3 6.0 8.3 5.9 11.3 0.000660 0.0006580 0.000672 0.000109 0.000641 0.000105 0.001227 392 380 2 5
60 16343 -152 -189 -205 -291 -299 -211 -303 -34 0.1115460 0.3522505 0.6731898 0.1390078 3.6 3.5 3.4 1.8 3.5 1.7 5.7 0.001184 0.0011770 0.001194 0.000530 0.001156 0.000517 0.001864 3.7 3.7 3.6 1.4 3.6 1.3 6.2 0.000659 0.0006560 0.000649 0.000112 0.000639 0.000109 0.001223 303 648 2 3
61 16345 -178 -196 -204 -300 -350 -212 -355 -24 0.0724070 0.2602740 0.5733855 0.0272248 6.2 6.2 6.0 4.3 6.1 4.2 8.4 0.000887 0.0008840 0.000876 0.000284 0.000865 0.000277 0.001504 6.6 6.6 6.4 4.3 6.5 4.2 9.2 0.000659 0.0006560 0.000674 0.000112 0.000639 0.000108 0.001222 357 485 2 9
62 16368 -320 -416 -450 -625 -631 -461 -639 -98 0.1526419 0.4168297 0.7025440 0.2124623 5.4 5.3 5.1 2.9 5.2 2.8 8.2 0.001007 0.0010010 0.000991 0.000421 0.000982 0.000407 0.001614 5.7 5.6 5.5 2.7 5.5 2.6 9.0 0.000661 0.0006580 0.000671 0.000109 0.000641 0.000102 0.001221 639 1151 3 5
63 16377 -226 -138 -116 -35 -385 -123 -343 0 0.2426614 0.5029354 0.7436399 0.3716367 8.3 8.2 8.0 6.1 8.1 5.9 10.9 0.001529 0.0015180 0.001491 0.000942 0.001498 0.000918 0.002156 9.0 8.9 8.7 6.3 8.8 6.2 12.0 0.000661 0.0006560 0.000640 0.000112 0.000639 0.000106 0.001225 453 702 3 6
64 16381 -274 -264 -260 -163 -530 -273 -520 -8 0.0645793 0.2367906 0.5362035 0.0118928 7.0 6.9 6.7 5.3 6.9 5.2 9.0 0.000572 0.0005620 0.000556 0.000207 0.000550 0.000189 0.000970 7.5 7.4 7.3 5.6 7.4 5.5 9.8 0.000647 0.0006440 0.000627 0.000125 0.000628 0.000121 0.001171 548 739 3 6
65 16384 -150 -152 -152 -209 -292 -160 -292 -12 0.0645793 0.2191781 0.5166341 0.0074737 6.9 6.9 6.8 5.2 6.8 5.1 8.8 0.000632 0.0006290 0.000647 0.000151 0.000614 0.000143 0.001120 7.4 7.4 7.3 5.3 7.3 5.2 9.8 0.000660 0.0006570 0.000668 0.000109 0.000640 0.000105 0.001224 299 396 2 9
66 16385 -252 -264 -272 -492 -495 -286 -501 -21 0.0508806 0.2074364 0.5381605 0.0146367 5.3 5.2 5.0 3.6 5.2 3.5 7.4 0.000952 0.0009390 0.000912 0.000441 0.000922 0.000417 0.001507 5.3 5.2 5.0 3.1 5.1 3.0 7.8 0.000838 0.0008280 0.000815 0.000268 0.000810 0.000250 0.001443 505 740 3 9
67 16397 -175 -129 -111 -12 -327 -118 -306 0 0.1252446 0.3776908 0.6790607 0.1593881 9.1 9.0 8.9 7.2 8.9 7.1 11.1 0.000812 0.0008070 0.000801 0.000283 0.000790 0.000276 0.001363 9.8 9.7 9.8 7.5 9.7 7.4 12.3 0.000659 0.0006550 0.000657 0.000112 0.000638 0.000109 0.001228 350 392 2 9
68 16418 -196 -155 -138 -13 -371 -147 -351 0 0.1056751 0.3346380 0.6457926 0.1019815 8.8 8.7 8.6 7.0 8.7 6.9 10.9 0.000689 0.0006820 0.000660 0.000270 0.000669 0.000259 0.001131 9.5 9.4 9.4 7.2 9.4 7.1 12.0 0.000659 0.0006560 0.000658 0.000108 0.000640 0.000102 0.001220 392 1130 2 5
69 16424 -175 -126 -108 -16 -324 -115 -301 0 0.1409002 0.3953033 0.6888454 0.1826703 8.7 8.6 8.6 6.8 8.6 6.6 10.9 0.001090 0.0010820 0.001073 0.000539 0.001064 0.000522 0.001673 9.4 9.3 9.1 7.0 9.2 6.9 12.0 0.000659 0.0006560 0.000650 0.000109 0.000640 0.000100 0.001217 350 1072 4 3
70 16431 -177 -200 -210 -328 -347 -218 -354 -30 0.0861057 0.2876712 0.5949119 0.0459821 6.1 6.1 6.0 4.0 6.0 3.9 8.5 0.001079 0.0010660 0.001002 0.000567 0.001048 0.000544 0.001642 6.5 6.5 6.4 3.9 6.4 3.9 9.3 0.000658 0.0006550 0.000645 0.000108 0.000638 0.000104 0.001223 354 391 2 9
71 16434 -260 -346 -375 -507 -515 -385 -521 -85 0.1624266 0.4324853 0.7181996 0.2487243 4.9 4.9 4.8 2.6 4.8 2.4 7.6 0.001166 0.0011590 0.001142 0.000600 0.001141 0.000592 0.001756 5.2 5.1 4.9 2.4 5.0 2.2 8.3 0.000660 0.0006560 0.000660 0.000114 0.000640 0.000107 0.001218 521 281 2 10
72 16436 -319 -174 -135 -12 -544 -144 -481 0 0.2465753 0.5459883 0.7866928 0.4855193 9.2 9.1 8.9 7.2 9.0 7.1 11.4 0.000777 0.0007690 0.000744 0.000243 0.000752 0.000230 0.001341 9.9 9.8 9.7 7.5 9.7 7.4 12.5 0.000659 0.0006550 0.000649 0.000109 0.000638 0.000103 0.001222 638 245 2 3
73 16472 -114 -88 -77 -12 -216 -82 -203 0 0.1154599 0.3561644 0.6614481 0.1289520 9.2 9.1 9.0 7.4 9.1 7.3 11.1 0.001099 0.0010920 0.001062 0.000513 0.001073 0.000497 0.001707 9.9 9.8 9.7 7.7 9.8 7.6 12.3 0.000660 0.0006570 0.000663 0.000110 0.000640 0.000096 0.001217 229 449 2 4
74 16476 -300 -375 -402 -564 -591 -414 -600 -79 0.1311155 0.3757339 0.6673190 0.1489175 5.3 5.2 5.0 3.3 5.2 3.2 7.6 0.000994 0.0009920 0.001025 0.000394 0.000972 0.000384 0.001601 5.6 5.5 5.4 3.3 5.5 3.1 8.3 0.000699 0.0006950 0.000692 0.000203 0.000680 0.000198 0.001210 600 1006 4 7
75 16508 -239 -261 -270 -452 -468 -281 -476 -35 0.0763209 0.2661448 0.5675147 0.0263665 6.2 6.1 6.0 4.4 6.1 4.3 8.2 0.000827 0.0008220 0.000810 0.000281 0.000805 0.000272 0.001395 6.6 6.5 6.5 4.6 6.5 4.5 8.8 0.000671 0.0006680 0.000675 0.000148 0.000651 0.000138 0.001212 478 748 3 5
76 16520 -292 -271 -262 -41 -564 -275 -547 -3 0.0684932 0.2485323 0.5518591 0.0188962 7.6 7.5 7.4 5.7 7.4 5.6 9.7 0.000512 0.0005050 0.000490 0.000145 0.000493 0.000133 0.000904 8.1 8.0 7.9 5.8 8.0 5.7 10.7 0.000660 0.0006570 0.000627 0.000108 0.000639 0.000100 0.001223 584 727 3 6
77 16523 -246 -277 -289 -427 -482 -300 -491 -41 0.0861057 0.2876712 0.5870841 0.0431251 6.4 6.3 6.2 4.2 6.2 4.0 8.8 0.000926 0.0009210 0.000927 0.000408 0.000904 0.000397 0.001462 6.8 6.7 6.5 4.2 6.6 4.0 9.7 0.000661 0.0006580 0.000654 0.000112 0.000641 0.000107 0.001226 492 638 3 7
78 16955 -142 -142 -141 -121 -277 -148 -275 -9 0.0645793 0.2211350 0.5185910 0.0075038 7.1 7.1 7.0 5.4 7.0 5.3 9.0 0.000704 0.0006980 0.000691 0.000245 0.000683 0.000232 0.001177 7.7 7.6 7.6 5.5 7.5 5.4 10.0 0.000660 0.0006570 0.000645 0.000108 0.000640 0.000100 0.001224 284 380 3 7
79 17514 -292 -262 -250 -162 -561 -263 -540 -2 0.0782779 0.2681018 0.5714286 0.0297216 7.7 7.6 7.5 5.8 7.6 5.7 10.0 0.000555 0.0005500 0.000530 0.000091 0.000535 0.000079 0.001038 8.3 8.2 7.9 5.9 8.1 5.8 11.0 0.000659 0.0006560 0.000656 0.000109 0.000639 0.000101 0.001222 583 0 1 5
80 20472 -180 -153 -141 -17 -345 -149 -329 0 0.0900196 0.2994129 0.6086106 0.0578878 7.8 7.8 7.7 6.5 7.7 6.4 9.5 0.000744 0.0007380 0.000753 0.000241 0.000722 0.000230 0.001268 8.4 8.3 8.1 6.8 8.2 6.7 10.3 0.000710 0.0007060 0.000711 0.000203 0.000690 0.000194 0.001235 361 368 2 7
81 21214 -252 -274 -282 -328 -491 -293 -501 -40 0.0861057 0.2818004 0.5753425 0.0356211 8.3 8.2 8.2 6.3 8.2 6.2 10.5 0.001016 0.0010120 0.000992 0.000388 0.000992 0.000381 0.001655 9.1 9.1 8.9 6.9 9.0 6.9 11.6 0.000492 0.0004920 0.000518 -0.000047 0.000475 -0.000048 0.001028 504 313 2 5
82 21285 -247 -223 -213 -102 -473 -223 -455 -3 0.0841487 0.2818004 0.5753425 0.0357111 7.5 7.4 7.1 5.3 7.3 5.1 10.0 0.001061 0.0010520 0.001047 0.000493 0.001034 0.000476 0.001664 8.0 7.9 7.7 5.4 7.8 5.2 11.0 0.000659 0.0006550 0.000646 0.000111 0.000639 0.000108 0.001222 494 117 2 6
83 21308 -90 -97 -100 -166 -177 -105 -179 -11 0.0743640 0.2504892 0.5577299 0.0207268 6.3 6.3 6.2 5.0 6.2 4.9 7.7 0.001037 0.0010315 0.001004 0.000444 0.001013 0.000432 0.001648 6.8 6.8 6.7 5.3 6.8 5.3 8.4 0.000709 0.0007030 0.000687 0.000219 0.000688 0.000205 0.001214 181 232 2 7
84 21325 -231 -219 -214 -118 -447 -225 -433 -4 0.0704501 0.2446184 0.5401174 0.0139503 7.0 6.9 6.7 5.4 6.8 5.3 8.8 0.000762 0.0007550 0.000729 0.000160 0.000736 0.000149 0.001387 7.4 7.3 6.9 5.6 7.2 5.4 9.5 0.000767 0.0007610 0.000769 0.000258 0.000745 0.000251 0.001302 462 388 2 8
85 21433 -112 -106 -102 -14 -217 -108 -211 -3 0.0704501 0.2426614 0.5479452 0.0151934 8.1 8.1 8.1 6.5 8.0 6.5 9.8 0.000586 0.0005870 0.000585 -0.000037 0.000568 -0.000036 0.001206 8.7 8.7 8.5 6.7 8.6 6.7 10.9 0.000658 0.0006560 0.000647 0.000108 0.000639 0.000102 0.001215 224 373 2 5
86 22354 -158 -132 -120 -17 -302 -128 -288 0 0.0919765 0.3052838 0.6203523 0.0679729 8.9 8.8 8.7 7.4 8.8 7.3 10.5 0.000533 0.0005280 0.000542 0.000046 0.000513 0.000039 0.001039 9.5 9.5 9.4 7.8 9.4 7.8 11.5 0.000672 0.0006690 0.000675 0.000141 0.000652 0.000132 0.001218 317 1856 3 4
87 23147 -229 -245 -251 -262 -447 -261 -455 -32 0.0763209 0.2563601 0.5518591 0.0200334 6.3 6.3 6.2 4.5 6.2 4.4 8.4 0.001029 0.0010210 0.001000 0.000472 0.001003 0.000453 0.001603 6.7 6.6 6.5 4.7 6.6 4.6 9.0 0.000682 0.0006780 0.000664 0.000154 0.000662 0.000146 0.001228 458 773 4 7
88 23212 -311 -442 -475 -607 -616 -484 -622 -157 0.2524462 0.5225049 0.7632094 0.4236566 5.9 5.9 5.7 3.7 5.8 3.7 8.2 0.001202 0.0011890 0.001151 0.000664 0.001170 0.000640 0.001787 6.4 6.3 6.3 4.1 6.2 4.0 8.9 0.000493 0.0004850 0.000458 0.000117 0.000472 0.000099 0.000902 622 1158 5 7
89 23727 -336 -379 -398 -631 -659 -412 -671 -57 0.0861057 0.2837573 0.5929550 0.0443488 6.0 5.9 5.9 4.1 5.9 4.0 8.2 0.000579 0.0005600 0.000518 0.000243 0.000548 0.000210 0.000983 6.4 6.3 6.1 4.2 6.2 4.0 8.8 0.000722 0.0007070 0.000676 0.000327 0.000693 0.000301 0.001166 672 1193 4 7
90 23777 -232 -196 -181 -19 -442 -192 -422 0 0.0880626 0.2935421 0.6086106 0.0567561 7.7 7.6 7.4 6.3 7.5 6.2 9.3 0.000619 0.0006110 0.000590 0.000252 0.000599 0.000240 0.001021 8.1 8.0 7.8 6.5 8.0 6.4 10.0 0.000582 0.0005780 0.000567 0.000190 0.000565 0.000179 0.000990 463 280 2 8
91 23795 -229 -192 -178 -41 -434 -188 -412 0 0.0998043 0.3131115 0.6105675 0.0675207 7.5 7.4 7.2 5.8 7.3 5.6 9.6 0.001000 0.0009900 0.000983 0.000615 0.000978 0.000597 0.001418 8.0 7.8 7.5 6.0 7.8 5.8 10.4 0.000875 0.0008680 0.000859 0.000481 0.000855 0.000470 0.001294 458 360 2 10
92 23797 -231 -188 -171 -14 -436 -181 -412 0 0.1076321 0.3287671 0.6301370 0.0868883 7.8 7.7 7.5 6.2 7.7 6.0 9.8 0.000903 0.0008930 0.000877 0.000535 0.000880 0.000516 0.001310 8.4 8.3 8.0 6.5 8.2 6.4 10.6 0.000689 0.0006830 0.000660 0.000316 0.000671 0.000307 0.001080 462 1007 2 6
93 23806 -238 -182 -161 -12 -446 -171 -419 0 0.1213307 0.3679061 0.6614481 0.1334865 8.2 8.1 7.9 6.3 8.1 6.1 10.5 0.000910 0.0009020 0.000883 0.000329 0.000883 0.000313 0.001524 8.9 8.8 8.7 6.5 8.7 6.3 11.6 0.000659 0.0006570 0.000658 0.000109 0.000639 0.000102 0.001220 477 1090 4 7
94 23813 -139 -90 -73 -11 -253 -78 -232 0 0.1643836 0.4422701 0.7318982 0.2816816 10.1 10.0 9.9 8.3 10.0 8.2 12.0 0.000884 0.0008780 0.000879 0.000354 0.000861 0.000344 0.001436 10.9 10.9 10.7 8.7 10.8 8.6 13.3 0.000659 0.0006560 0.000668 0.000105 0.000639 0.000099 0.001220 278 1004 4 7
95 23816 -240 -238 -238 -206 -466 -249 -463 -13 0.0606654 0.2211350 0.5225049 0.0076469 7.1 7.1 7.0 5.1 7.0 5.0 9.4 0.000647 0.0006350 0.000610 0.000214 0.000620 0.000192 0.001126 7.6 7.6 7.5 5.2 7.5 5.1 10.3 0.000659 0.0006550 0.000630 0.000112 0.000638 0.000105 0.001215 479 891 2 8
96 23823 -184 -167 -160 -16 -356 -168 -344 -2 0.0724070 0.2622309 0.5694716 0.0255540 8.0 8.0 7.9 6.5 7.9 6.4 9.7 0.000514 0.0005100 0.000508 0.000217 0.000500 0.000208 0.000828 8.6 8.5 8.5 6.8 8.5 6.7 10.5 0.000672 0.0006690 0.000630 0.000145 0.000652 0.000137 0.001211 369 1096 2 2
97 23839 -240 -222 -214 -141 -462 -225 -449 -3 0.0704501 0.2524462 0.5557730 0.0195415 7.7 7.6 7.3 5.8 7.5 5.6 9.8 0.000650 0.0006440 0.000630 0.000265 0.000631 0.000254 0.001057 8.2 8.1 8.0 5.9 8.1 5.8 10.8 0.000659 0.0006550 0.000626 0.000110 0.000638 0.000102 0.001220 479 1008 3 9
98 23845 -56 -53 -51 -12 -108 -54 -105 -2 0.0763209 0.2446184 0.5499022 0.0209459 8.6 8.6 8.6 7.2 8.6 7.2 10.1 0.001050 0.0010370 0.001019 0.000617 0.001023 0.000593 0.001527 9.4 9.4 9.4 7.8 9.3 7.8 11.0 0.000650 0.0006460 0.000637 0.000106 0.000630 0.000100 0.001203 112 1057 3 8
99 23850 -190 -234 -253 -369 -376 -261 -381 -40 0.1037182 0.3444227 0.6614481 0.1216061 3.9 3.8 3.7 1.9 3.8 1.8 6.1 0.000897 0.0008850 0.000857 0.000277 0.000865 0.000259 0.001557 4.1 4.0 4.0 1.6 3.9 1.5 6.7 0.000660 0.0006570 0.000630 0.000110 0.000639 0.000105 0.001220 381 89 2 8
100 23983 -238 -149 -124 -15 -420 -132 -379 0 0.2035225 0.4794521 0.7377691 0.3273804 8.8 8.7 8.6 6.9 8.6 6.7 11.0 0.000992 0.0009800 0.000971 0.000544 0.000964 0.000524 0.001483 9.5 9.4 9.3 7.1 9.3 7.0 12.2 0.000660 0.0006580 0.000615 0.000108 0.000640 0.000104 0.001223 476 698 2 3
101 23988 -203 -178 -168 -14 -389 -177 -373 -1 0.0841487 0.2837573 0.5890411 0.0409534 7.9 7.9 7.6 6.0 7.8 5.9 10.1 0.000811 0.0008000 0.000781 0.000376 0.000785 0.000354 0.001284 8.5 8.5 8.3 6.2 8.4 6.1 11.2 0.000660 0.0006560 0.000657 0.000113 0.000640 0.000107 0.001218 406 727 3 7
102 24003 -286 -149 -119 -15 -458 -126 -398 0 0.3052838 0.5772994 0.7906067 0.5567829 10.1 10.0 9.8 8.6 10.0 8.5 12.0 0.000856 0.0008490 0.000852 0.000252 0.000829 0.000245 0.001490 11.2 11.1 10.9 9.5 11.0 9.4 13.2 0.000512 0.0005090 0.000485 -0.000007 0.000493 -0.000009 0.001050 573 730 4 7
103 24024 -208 -266 -288 -401 -410 -296 -415 -54 0.1291585 0.3874755 0.6927593 0.1806715 4.6 4.5 4.4 2.4 4.5 2.3 7.1 0.001102 0.0010950 0.001127 0.000493 0.001075 0.000478 0.001741 4.8 4.8 4.8 2.1 4.7 2.0 7.7 0.000660 0.0006560 0.000657 0.000108 0.000639 0.000098 0.001217 415 700 3 7
104 24038 -140 -134 -132 -42 -273 -139 -266 -4 0.0665362 0.2328767 0.5362035 0.0112020 7.7 7.7 7.6 6.0 7.6 5.9 9.6 0.000642 0.0006380 0.000620 0.000201 0.000624 0.000193 0.001101 8.3 8.3 8.1 6.2 8.2 6.1 10.6 0.000659 0.0006550 0.000638 0.000108 0.000639 0.000106 0.001226 281 360 2 6
105 24045 -140 -134 -131 -79 -272 -138 -265 -4 0.0684932 0.2348337 0.5362035 0.0112240 7.6 7.5 7.4 5.8 7.4 5.7 9.5 0.000809 0.0008060 0.000796 0.000360 0.000792 0.000349 0.001265 8.1 8.1 8.0 5.9 8.0 5.8 10.5 0.000661 0.0006560 0.000640 0.000111 0.000640 0.000110 0.001231 280 682 3 7
106 24049 -148 -137 -133 -41 -285 -140 -277 -3 0.0724070 0.2504892 0.5557730 0.0178765 7.8 7.7 7.6 5.9 7.7 5.9 9.8 0.000912 0.0009070 0.000872 0.000447 0.000891 0.000440 0.001398 8.4 8.3 8.3 6.1 8.2 6.0 10.8 0.000661 0.0006580 0.000633 0.000105 0.000640 0.000098 0.001222 295 700 3 7
107 24051 -132 -129 -129 -84 -256 -135 -253 -7 0.0645793 0.2211350 0.5166341 0.0074700 7.3 7.3 7.1 5.7 7.2 5.6 9.1 0.000533 0.0005330 0.000540 -0.000052 0.000515 -0.000054 0.001116 7.8 7.8 7.7 5.8 7.7 5.7 10.1 0.000659 0.0006550 0.000661 0.000107 0.000638 0.000101 0.001226 263 1314 4 2
108 24068 -260 -230 -218 -158 -497 -229 -476 -1 0.0841487 0.2857143 0.5812133 0.0399069 7.6 7.5 7.3 5.6 7.5 5.4 10.1 0.000876 0.0008680 0.000847 0.000389 0.000852 0.000372 0.001391 8.2 8.1 7.8 5.7 8.0 5.5 11.0 0.000659 0.0006560 0.000635 0.000111 0.000639 0.000104 0.001224 519 1074 2 9
109 24072 -270 -220 -201 -57 -510 -212 -482 0 0.1095890 0.3385519 0.6281800 0.0910061 7.9 7.8 7.7 5.8 7.7 5.6 10.3 0.000932 0.0009240 0.000886 0.000455 0.000908 0.000441 0.001440 8.5 8.4 8.0 5.9 8.3 5.8 11.3 0.000660 0.0006580 0.000665 0.000113 0.000641 0.000106 0.001218 541 797 2 8
110 24085 -27 -28 -28 -41 -53 -29 -52 -3 0.0782779 0.2524462 0.5401174 0.0275948 4.1 4.1 4.0 2.8 4.0 2.7 5.5 0.000420 0.0004140 0.000413 -0.000034 0.000399 -0.000047 0.000893 4.3 4.3 4.2 2.4 4.2 2.4 6.1 0.000660 0.0006560 0.000648 0.000109 0.000639 0.000102 0.001217 54 387 2 7
111 24105 -76 -68 -64 -13 -146 -67 -141 -1 0.0802348 0.2700587 0.5812133 0.0364528 8.8 8.8 8.8 7.0 8.7 7.0 10.7 0.000953 0.0009400 0.000922 0.000542 0.000926 0.000517 0.001410 9.5 9.5 9.4 7.3 9.4 7.3 11.8 0.000657 0.0006540 0.000648 0.000111 0.000638 0.000108 0.001213 152 273 2 9
112 24121 -117 -95 -86 -15 -223 -91 -211 0 0.0978474 0.3189824 0.6301370 0.0827908 8.1 8.0 8.0 6.5 8.0 6.5 9.7 0.001152 0.0011390 0.001132 0.000686 0.001123 0.000659 0.001660 8.6 8.6 8.5 6.8 8.5 6.8 10.5 0.000688 0.0006830 0.000641 0.000146 0.000666 0.000140 0.001248 234 392 2 9
113 24124 -353 -270 -241 -95 -657 -254 -615 0 0.1291585 0.3776908 0.6614481 0.1408676 7.8 7.7 7.5 5.6 7.6 5.5 10.4 0.000905 0.0008930 0.000872 0.000351 0.000875 0.000331 0.001497 8.4 8.3 8.0 5.8 8.2 5.6 11.4 0.000661 0.0006580 0.000675 0.000110 0.000641 0.000105 0.001221 706 0 1 7
114 24127 -228 -154 -127 -13 -420 -135 -387 0 0.1506849 0.4266145 0.7201566 0.2434882 9.2 9.1 9.0 7.4 9.1 7.2 11.3 0.000733 0.0007270 0.000723 0.000151 0.000708 0.000135 0.001330 9.9 9.9 9.7 7.7 9.8 7.5 12.5 0.000659 0.0006570 0.000661 0.000109 0.000640 0.000109 0.001225 456 1072 4 7
115 24129 -174 -127 -110 -22 -322 -117 -299 0 0.1428571 0.3953033 0.6829746 0.1776414 8.5 8.4 8.4 6.5 8.4 6.4 10.8 0.001216 0.0012070 0.001198 0.000650 0.001188 0.000631 0.001815 9.2 9.1 9.0 6.8 9.0 6.6 11.9 0.000659 0.0006560 0.000620 0.000107 0.000638 0.000095 0.001218 349 727 3 7
116 24148 -198 -182 -175 -56 -381 -185 -369 -3 0.0724070 0.2583170 0.5577299 0.0216339 7.7 7.7 7.6 5.7 7.6 5.6 10.0 0.000822 0.0008200 0.000806 0.000153 0.000800 0.000145 0.001502 8.3 8.2 8.3 5.8 8.2 5.7 11.0 0.000659 0.0006560 0.000663 0.000110 0.000639 0.000100 0.001219 395 330 2 7
117 24156 -259 -227 -215 -161 -493 -226 -468 -1 0.0978474 0.3033268 0.5929550 0.0540020 7.5 7.4 7.1 5.3 7.4 5.1 10.1 0.001168 0.0011580 0.001130 0.000702 0.001142 0.000684 0.001680 8.1 8.0 7.6 5.4 7.9 5.2 11.1 0.000659 0.0006560 0.000659 0.000112 0.000639 0.000103 0.001216 518 1075 4 8
118 24162 -200 -183 -175 -14 -388 -185 -374 -2 0.0704501 0.2524462 0.5616438 0.0221093 8.2 8.2 8.1 6.5 8.1 6.4 10.1 0.000398 0.0003950 0.000387 0.000007 0.000383 -0.000002 0.000797 8.9 8.8 8.7 6.7 8.8 6.6 11.2 0.000661 0.0006580 0.000674 0.000113 0.000641 0.000109 0.001228 401 321 2 6
119 24269 -204 -198 -195 -172 -395 -205 -388 -8 0.0684932 0.2407045 0.5420744 0.0131010 7.3 7.2 7.1 5.2 7.1 5.1 9.7 0.001081 0.0010750 0.001058 0.000493 0.001056 0.000480 0.001693 7.8 7.7 7.5 5.3 7.6 5.2 10.7 0.000660 0.0006570 0.000631 0.000106 0.000640 0.000101 0.001219 408 1106 6 4
120 24375 -203 -183 -173 -14 -391 -183 -377 -2 0.0743640 0.2641879 0.5753425 0.0282948 8.0 8.0 7.8 6.2 7.9 6.1 10.0 0.000583 0.0005780 0.000551 0.000227 0.000566 0.000216 0.000958 8.6 8.6 8.4 6.4 8.5 6.3 11.1 0.000659 0.0006560 0.000650 0.000108 0.000639 0.000105 0.001228 406 388 2 6
121 24409 -156 -159 -160 -151 -305 -168 -307 -15 0.0665362 0.2230920 0.5225049 0.0083605 7.0 6.9 6.8 5.1 6.8 5.0 9.0 0.000835 0.0008320 0.000819 0.000233 0.000813 0.000225 0.001442 7.4 7.4 7.4 5.2 7.3 5.1 9.9 0.000658 0.0006550 0.000623 0.000111 0.000638 0.000109 0.001219 313 357 2 9
122 24440 -336 -360 -367 -427 -655 -382 -669 -53 0.0841487 0.2700587 0.5616438 0.0294070 6.7 6.6 6.5 4.9 6.6 4.8 8.9 0.000824 0.0008160 0.000807 0.000447 0.000803 0.000430 0.001234 7.3 7.2 6.9 5.3 7.1 5.2 9.7 0.000572 0.0005720 0.000574 0.000148 0.000559 0.000144 0.000996 673 738 3 8
123 24912 -352 -313 -297 -220 -673 -312 -647 -3 0.0841487 0.2837573 0.5831703 0.0405083 7.5 7.3 7.1 5.3 7.3 5.1 10.0 0.000735 0.0007260 0.000709 0.000192 0.000709 0.000178 0.001309 8.0 7.9 7.9 5.4 7.8 5.2 11.0 0.000660 0.0006560 0.000622 0.000109 0.000639 0.000103 0.001220 703 393 2 6
124 24925 -196 -134 -114 -15 -358 -121 -328 0 0.1604697 0.4246575 0.7064579 0.2277449 8.7 8.6 8.5 6.7 8.5 6.6 10.9 0.001095 0.0010860 0.001060 0.000524 0.001067 0.000509 0.001693 9.3 9.3 9.2 6.9 9.2 6.8 12.0 0.000660 0.0006580 0.000665 0.000105 0.000640 0.000101 0.001223 391 484 2 3
125 2543F -248 -189 -165 -14 -468 -175 -440 0 0.1154599 0.3600783 0.6673190 0.1338122 8.7 8.7 8.6 6.9 8.6 6.8 10.9 0.000629 0.0006230 0.000603 0.000226 0.000609 0.000212 0.001055 9.4 9.4 9.1 7.1 9.3 7.0 12.0 0.000659 0.0006560 0.000652 0.000109 0.000639 0.000106 0.001221 497 1375 2 4
126 25E35 -175 -181 -184 -184 -341 -192 -345 -19 0.0684932 0.2367906 0.5303327 0.0108254 6.9 6.8 6.7 4.9 6.7 4.8 9.1 0.000921 0.0009170 0.000898 0.000345 0.000899 0.000334 0.001512 7.3 7.3 7.2 4.9 7.2 4.8 10.0 0.000659 0.0006550 0.000648 0.000107 0.000638 0.000104 0.001221 350 823 2 6
127 26070 -231 -285 -305 -442 -455 -314 -462 -56 0.1213307 0.3581213 0.6594912 0.1270062 5.7 5.6 5.4 3.8 5.6 3.7 7.7 0.001024 0.0010180 0.001009 0.000455 0.001000 0.000442 0.001613 6.1 6.0 6.0 4.0 6.0 3.9 8.3 0.000637 0.0006340 0.000608 0.000104 0.000618 0.000101 0.001177 462 1848 6 6
128 26079 -199 -232 -246 -386 -392 -255 -398 -35 0.0880626 0.2994129 0.6144814 0.0651468 5.1 5.1 4.9 3.4 5.0 3.3 7.0 0.000860 0.0008430 0.000768 0.000361 0.000826 0.000337 0.001424 5.2 5.2 5.2 3.2 5.1 3.1 7.4 0.000877 0.0008630 0.000834 0.000427 0.000848 0.000407 0.001374 398 1393 3 7
129 26082 -126 -122 -120 -39 -245 -127 -241 -5 0.0665362 0.2289628 0.5283757 0.0091067 7.4 7.3 7.3 5.9 7.3 5.9 8.9 0.000682 0.0006720 0.000669 0.000254 0.000657 0.000236 0.001145 7.9 7.9 7.8 6.3 7.9 6.2 9.7 0.000650 0.0006450 0.000631 0.000262 0.000632 0.000250 0.001061 252 162 2 1
130 26190 -174 -173 -173 -143 -339 -181 -335 -9 0.0645793 0.2230920 0.5205479 0.0075217 7.2 7.2 7.2 5.6 7.1 5.5 9.1 0.000749 0.0007400 0.000725 0.000445 0.000730 0.000426 0.001085 7.9 7.8 7.7 5.9 7.7 5.8 10.0 0.000547 0.0005460 0.000553 0.000081 0.000531 0.000080 0.001016 349 1834 6 8
131 26195 -150 -135 -128 -26 -289 -135 -277 -1 0.0802348 0.2700587 0.5772994 0.0311070 7.7 7.7 7.6 6.1 7.6 6.1 9.5 0.001012 0.0009980 0.000966 0.000598 0.000984 0.000572 0.001473 8.3 8.2 8.1 6.5 8.2 6.4 10.3 0.000670 0.0006670 0.000640 0.000133 0.000650 0.000130 0.001224 300 1486 5 8
132 26196 -229 -303 -331 -445 -453 -340 -458 -66 0.1448141 0.4187867 0.7201566 0.2389961 3.5 3.4 3.4 1.9 3.4 1.9 5.2 0.001057 0.0010540 0.001061 0.000399 0.001033 0.000391 0.001725 3.6 3.6 3.5 2.0 3.5 1.9 5.4 0.000644 0.0006420 0.000637 0.000109 0.000625 0.000101 0.001184 458 1858 3 3
133 26225 -130 -117 -110 -13 -252 -116 -243 -1 0.0743640 0.2681018 0.5792564 0.0320514 8.1 8.1 8.0 6.5 8.0 6.5 9.9 0.000765 0.0007580 0.000719 0.000481 0.000748 0.000467 0.001073 8.7 8.7 8.7 6.9 8.6 6.8 10.8 0.000662 0.0006580 0.000639 0.000198 0.000644 0.000195 0.001141 261 362 2 5
134 26231 -175 -144 -131 -15 -333 -139 -316 0 0.0978474 0.3150685 0.6242661 0.0763740 8.9 8.9 8.8 7.4 8.8 7.3 10.5 0.000548 0.0005450 0.000528 0.000324 0.000537 0.000319 0.000788 9.6 9.5 9.5 7.8 9.5 7.8 11.5 0.000672 0.0006680 0.000669 0.000143 0.000651 0.000134 0.001220 350 364 2 5
135 31439 -238 -280 -299 -464 -468 -309 -476 -46 0.0958904 0.3131115 0.6262231 0.0760627 5.1 5.1 4.9 3.3 5.0 3.2 7.2 0.000866 0.0008520 0.000826 0.000381 0.000836 0.000360 0.001406 5.4 5.3 5.1 3.2 5.2 3.0 7.8 0.000768 0.0007620 0.000755 0.000276 0.000746 0.000262 0.001286 476 1486 4 4
136 32E5F -116 -127 -132 -217 -226 -137 -230 -17 0.0782779 0.2641879 0.5733855 0.0289864 6.7 6.7 6.6 5.2 6.6 5.1 8.3 0.001049 0.0010430 0.001041 0.000475 0.001025 0.000458 0.001640 7.3 7.2 7.1 5.5 7.2 5.5 9.1 0.000626 0.0006250 0.000639 0.000081 0.000608 0.000076 0.001173 231 1777 5 3
137 3336E -114 -123 -127 -214 -224 -132 -226 -14 0.0743640 0.2504892 0.5538160 0.0196681 6.3 6.3 6.2 4.8 6.2 4.8 7.9 0.000991 0.0009860 0.001021 0.000413 0.000967 0.000403 0.001594 6.8 6.7 6.6 5.1 6.7 5.0 8.6 0.000652 0.0006490 0.000652 0.000107 0.000632 0.000101 0.001203 229 1889 5 3
138 3360A -176 -199 -209 -326 -346 -217 -352 -29 0.0841487 0.2857143 0.5929550 0.0436031 5.9 5.9 5.8 4.3 5.8 4.3 7.7 0.001060 0.0010470 0.001000 0.000640 0.001033 0.000617 0.001524 6.3 6.3 6.2 4.5 6.2 4.5 8.3 0.000592 0.0005850 0.000573 0.000263 0.000575 0.000249 0.000940 353 391 3 4
139 33816 -288 -359 -385 -544 -569 -396 -577 -72 0.1252446 0.3718200 0.6653620 0.1412544 5.3 5.2 5.0 3.5 5.1 3.3 7.4 0.000986 0.0009750 0.000964 0.000522 0.000960 0.000501 0.001490 5.6 5.5 5.3 3.6 5.4 3.5 7.9 0.000690 0.0006840 0.000673 0.000280 0.000671 0.000271 0.001122 577 730 2 3
140 33B58 -230 -311 -339 -448 -455 -347 -460 -78 0.1702544 0.4500978 0.7338552 0.2864826 4.4 4.3 4.3 2.6 4.3 2.5 6.4 0.001259 0.0012460 0.001226 0.000728 0.001229 0.000708 0.001839 4.6 4.6 4.3 2.7 4.5 2.6 6.8 0.000882 0.0008710 0.000860 0.000452 0.000857 0.000435 0.001346 460 1504 3 7
141 35252 -147 -174 -185 -281 -289 -191 -294 -29 0.0978474 0.3170254 0.6281800 0.0798228 5.7 5.7 5.5 4.2 5.6 4.2 7.4 0.001150 0.0011440 0.001130 0.000599 0.001126 0.000590 0.001725 6.2 6.1 6.1 4.6 6.1 4.5 8.0 0.000689 0.0006850 0.000674 0.000228 0.000670 0.000222 0.001168 294 1054 2 3
142 3581A -256 -326 -354 -498 -505 -364 -512 -64 0.1252446 0.3874755 0.6868885 0.1742568 5.1 5.0 4.8 2.8 4.9 2.6 7.6 0.000992 0.0009850 0.000964 0.000399 0.000966 0.000385 0.001607 5.3 5.3 5.0 2.6 5.2 2.5 8.4 0.000660 0.0006560 0.000626 0.000112 0.000639 0.000106 0.001219 512 738 2 6
143 3604E -238 -195 -176 -14 -453 -187 -430 0 0.0978474 0.3189824 0.6301370 0.0817012 8.5 8.4 8.4 6.9 8.4 6.8 10.2 0.000490 0.0004830 0.000471 0.000257 0.000475 0.000245 0.000749 9.2 9.1 9.0 7.4 9.1 7.3 11.2 0.000493 0.0004840 0.000468 0.000183 0.000474 0.000166 0.000832 477 1345 5 4
144 36401 -182 -217 -232 -351 -359 -240 -365 -36 0.0978474 0.3170254 0.6320939 0.0828068 5.0 5.0 4.9 3.3 4.9 3.3 6.8 0.000976 0.0009640 0.000903 0.000442 0.000946 0.000422 0.001558 5.3 5.2 5.2 3.4 5.2 3.3 7.3 0.000672 0.0006690 0.000621 0.000137 0.000652 0.000130 0.001219 365 57 2 5
145 36417 -306 -271 -256 -42 -587 -270 -564 -1 0.0782779 0.2720157 0.5812133 0.0346205 7.3 7.3 7.2 5.7 7.2 5.6 9.2 0.000455 0.0004450 0.000416 0.000056 0.000431 0.000036 0.000888 7.8 7.7 7.5 6.0 7.6 5.9 9.9 0.000429 0.0004250 0.000398 0.000031 0.000412 0.000027 0.000843 611 1881 6 4
146 36813 -248 -265 -273 -467 -486 -285 -494 -31 0.0665362 0.2426614 0.5499022 0.0168215 5.8 5.8 5.6 4.3 5.7 4.2 7.6 0.000545 0.0005410 0.000551 0.000233 0.000531 0.000223 0.000875 6.1 6.1 5.9 4.3 6.0 4.2 8.2 0.000578 0.0005700 0.000550 0.000196 0.000558 0.000183 0.000990 496 374 2 5
147 37468 -128 -127 -127 -118 -248 -133 -247 -8 0.0665362 0.2191781 0.5166341 0.0076371 6.8 6.8 6.7 5.5 6.7 5.5 8.2 0.000832 0.0008300 0.000828 0.000183 0.000809 0.000181 0.001495 7.3 7.2 7.1 5.8 7.2 5.8 8.8 0.000667 0.0006640 0.000650 0.000135 0.000648 0.000136 0.001213 255 486 3 3
148 37471 -79 -83 -85 -143 -155 -89 -155 -8 0.0724070 0.2367906 0.5420744 0.0153418 5.1 5.0 5.0 3.9 5.0 3.9 6.3 0.000778 0.0007650 0.000727 0.000413 0.000752 0.000391 0.001188 5.3 5.3 5.2 4.0 5.2 4.0 6.7 0.000527 0.0005190 0.000491 0.000218 0.000509 0.000203 0.000862 158 353 2 7
149 37510 -176 -187 -192 -284 -344 -201 -349 -21 0.0704501 0.2446184 0.5479452 0.0156451 6.4 6.4 6.2 4.6 6.3 4.5 8.5 0.000763 0.0007600 0.000757 0.000164 0.000741 0.000162 0.001369 6.9 6.8 6.8 4.6 6.7 4.5 9.4 0.000660 0.0006560 0.000646 0.000113 0.000639 0.000108 0.001225 352 351 2 7
150 37535 -258 -309 -330 -497 -506 -341 -515 -54 0.1056751 0.3326810 0.6399217 0.0961185 5.2 5.1 5.0 3.5 5.0 3.4 7.0 0.000936 0.0009320 0.000941 0.000380 0.000914 0.000370 0.001512 5.4 5.3 5.2 3.6 5.3 3.5 7.5 0.000711 0.0007060 0.000701 0.000197 0.000691 0.000191 0.001249 515 320 2 5
151 37539 -182 -161 -151 -15 -349 -160 -336 -2 0.0782779 0.2759295 0.5851272 0.0364909 7.3 7.2 7.2 5.5 7.2 5.4 9.3 0.000993 0.0009860 0.000983 0.000434 0.000968 0.000424 0.001588 7.7 7.7 7.5 5.6 7.6 5.5 10.1 0.000782 0.0007750 0.000758 0.000313 0.000760 0.000303 0.001281 363 1836 6 8
152 37541 -254 -182 -158 -13 -466 -167 -431 0 0.1506849 0.4070450 0.6888454 0.1899520 8.4 8.3 8.1 6.7 8.3 6.6 10.4 0.000826 0.0008160 0.000790 0.000315 0.000800 0.000302 0.001372 9.1 9.0 8.9 7.2 9.0 7.0 11.3 0.000631 0.0006280 0.000614 0.000101 0.000612 0.000098 0.001177 507 500 3 6
153 37544 -262 -278 -285 -483 -512 -298 -520 -30 0.0645793 0.2426614 0.5459883 0.0152793 6.5 6.4 6.3 4.9 6.4 4.8 8.5 0.000590 0.0005860 0.000591 0.000041 0.000568 0.000032 0.001156 6.8 6.7 6.6 4.8 6.7 4.7 9.1 0.000751 0.0007460 0.000712 0.000222 0.000728 0.000209 0.001300 524 1478 5 4
154 37572 -249 -159 -134 -14 -441 -142 -399 0 0.1996086 0.4696673 0.7299413 0.3056391 9.3 9.2 9.1 7.7 9.1 7.6 11.2 0.000816 0.0008080 0.000792 0.000560 0.000799 0.000544 0.001100 10.1 10.0 9.9 8.4 10.0 8.3 12.2 0.000513 0.0005090 0.000501 0.000189 0.000499 0.000181 0.000852 498 2225 7 4
155 37599 -250 -204 -187 -33 -473 -198 -450 0 0.1017613 0.3307241 0.6262231 0.0842903 8.1 8.0 7.8 6.4 8.0 6.3 10.1 0.000722 0.0007160 0.000713 0.000281 0.000702 0.000273 0.001186 8.8 8.7 8.4 6.9 8.7 6.8 11.1 0.000603 0.0005990 0.000567 0.000078 0.000582 0.000074 0.001145 500 1940 6 3
156 37630 -350 -383 -396 -593 -684 -411 -699 -58 0.0841487 0.2778865 0.5694716 0.0343092 6.2 6.1 5.9 4.1 6.0 4.0 8.6 0.000937 0.0009250 0.000894 0.000549 0.000912 0.000525 0.001368 6.5 6.4 6.3 4.2 6.3 4.0 9.3 0.000718 0.0007140 0.000713 0.000198 0.000697 0.000191 0.001248 700 1096 4 5
157 37646 -64 -68 -69 -116 -125 -73 -126 -7 0.0743640 0.2426614 0.5479452 0.0193886 5.4 5.4 5.3 4.1 5.3 4.1 6.6 0.000901 0.0008880 0.000871 0.000543 0.000876 0.000522 0.001304 5.7 5.7 5.7 4.3 5.6 4.2 7.2 0.000660 0.0006530 0.000650 0.000203 0.000639 0.000192 0.001138 128 461 3 7
158 38958 -163 -193 -206 -313 -321 -213 -326 -31 0.0958904 0.3150685 0.6301370 0.0809633 4.5 4.5 4.4 3.2 4.4 3.1 6.0 0.001121 0.0011090 0.001101 0.000639 0.001094 0.000619 0.001647 4.7 4.6 4.5 3.2 4.6 3.2 6.3 0.000719 0.0007140 0.000698 0.000215 0.000698 0.000206 0.001239 326 725 4 5
159 38976 -195 -208 -213 -327 -381 -222 -387 -24 0.0704501 0.2446184 0.5479452 0.0164243 5.8 5.8 5.7 4.2 5.7 4.1 7.7 0.000985 0.0009760 0.000947 0.000534 0.000960 0.000520 0.001478 6.1 6.0 6.0 4.2 6.0 4.1 8.2 0.000714 0.0007100 0.000710 0.000175 0.000694 0.000165 0.001267 390 1758 5 4
160 38981 -181 -144 -129 -14 -343 -137 -324 0 0.1056751 0.3346380 0.6418787 0.0987402 8.7 8.6 8.4 7.1 8.6 7.0 10.5 0.000753 0.0007490 0.000752 0.000307 0.000734 0.000294 0.001209 9.5 9.4 9.2 7.6 9.3 7.5 11.6 0.000529 0.0005290 0.000522 0.000128 0.000516 0.000128 0.000936 362 532 2 7
161 39013 -258 -252 -249 -192 -499 -261 -488 -7 0.0665362 0.2328767 0.5362035 0.0110212 6.8 6.8 6.5 5.3 6.7 5.2 8.7 0.000723 0.0007160 0.000687 0.000299 0.000702 0.000287 0.001172 7.3 7.2 7.0 5.6 7.2 5.5 9.4 0.000616 0.0006120 0.000608 0.000210 0.000599 0.000198 0.001038 515 2346 3 7
162 39014 -262 -303 -319 -404 -513 -330 -523 -52 0.0998043 0.3131115 0.6105675 0.0666788 5.7 5.6 5.5 4.0 5.6 3.8 7.7 0.001121 0.0011100 0.001102 0.000672 0.001095 0.000649 0.001610 6.0 5.9 5.7 4.1 5.9 3.9 8.3 0.000743 0.0007370 0.000733 0.000304 0.000722 0.000289 0.001201 523 737 3 6
163 39031 -234 -177 -156 -17 -434 -166 -407 0 0.1291585 0.3737769 0.6653620 0.1415912 7.9 7.9 7.8 6.2 7.8 6.1 9.9 0.000974 0.0009630 0.000940 0.000490 0.000946 0.000471 0.001503 8.5 8.4 8.3 6.6 8.4 6.4 10.8 0.000669 0.0006650 0.000678 0.000141 0.000649 0.000135 0.001207 467 1814 5 8
164 39037 -233 -181 -163 -31 -436 -172 -409 0 0.1213307 0.3542074 0.6516634 0.1191700 8.4 8.4 8.2 6.7 8.3 6.6 10.4 0.000800 0.0007750 0.000731 0.000477 0.000763 0.000441 0.001207 9.1 9.0 8.9 7.2 9.0 7.1 11.3 0.000633 0.0006300 0.000620 0.000108 0.000613 0.000101 0.001164 466 1283 4 6
165 39045 -349 -245 -217 -85 -624 -229 -571 0 0.1819961 0.4363992 0.6908023 0.2288864 7.9 7.8 7.5 6.0 7.7 5.8 10.2 0.001000 0.0009880 0.000982 0.000569 0.000973 0.000549 0.001471 8.5 8.4 8.1 6.4 8.3 6.2 11.1 0.000643 0.0006400 0.000627 0.000123 0.000624 0.000115 0.001175 698 1062 5 5
166 39430 -79 -72 -69 -14 -153 -72 -147 -2 0.0802348 0.2622309 0.5694716 0.0284284 8.4 8.4 8.3 7.0 8.3 7.0 9.9 0.001265 0.0012540 0.001244 0.000879 0.001241 0.000856 0.001685 9.1 9.1 9.0 7.6 9.0 7.5 10.8 0.000785 0.0007790 0.000770 0.000403 0.000767 0.000395 0.001192 158 360 3 12
167 39432 -234 -220 -215 -183 -448 -225 -433 -5 0.0821918 0.2641879 0.5694716 0.0270069 7.2 7.1 6.9 5.4 7.1 5.2 9.4 0.001225 0.0012120 0.001171 0.000781 0.001197 0.000761 0.001715 7.8 7.7 7.4 5.7 7.6 5.5 10.2 0.000803 0.0007980 0.000801 0.000383 0.000784 0.000375 0.001247 467 1808 6 6
168 39454 -262 -263 -263 -235 -510 -276 -515 -23 0.0626223 0.2230920 0.5225049 0.0074693 6.7 6.6 6.4 5.1 6.5 5.0 8.6 0.000577 0.0005720 0.000560 0.000224 0.000560 0.000210 0.000947 7.1 7.0 6.8 5.2 6.9 5.1 9.3 0.000721 0.0007140 0.000704 0.000302 0.000701 0.000286 0.001161 525 728 4 6
169 41214 -263 -60 -43 -10 -215 -46 -176 0 0.6653620 0.8140900 0.9158513 1.6953464 10.8 10.8 10.6 9.2 10.7 9.1 12.7 0.001341 0.0013350 0.001329 0.000765 0.001316 0.000751 0.001932 11.8 11.7 11.6 9.6 11.6 9.5 14.1 0.000660 0.0006570 0.000652 0.000108 0.000641 0.000107 0.001224 526 1157 3 9
170 4151F -254 -232 -223 -21 -490 -235 -473 -2 0.0724070 0.2544031 0.5616438 0.0225156 7.7 7.7 7.6 6.0 7.6 5.9 9.6 0.000524 0.0005180 0.000512 0.000285 0.000511 0.000278 0.000784 8.4 8.3 8.3 6.4 8.3 6.2 10.6 0.000435 0.0004300 0.000401 0.000060 0.000418 0.000052 0.000824 508 1989 6 6
171 41795 -240 -259 -267 -391 -469 -279 -477 -32 0.0704501 0.2544031 0.5596869 0.0211856 7.0 6.9 6.7 5.3 6.8 5.2 8.9 0.000633 0.0006270 0.000589 0.000222 0.000613 0.000209 0.001069 7.3 7.2 6.9 5.3 7.1 5.1 9.6 0.000914 0.0009060 0.000877 0.000492 0.000893 0.000474 0.001363 479 2576 7 2
172 42558 -84 -73 -67 -13 -162 -71 -154 0 0.0880626 0.2876712 0.6027397 0.0532639 9.4 9.4 9.3 8.0 9.3 8.0 10.8 0.000788 0.0007800 0.000767 0.000448 0.000768 0.000430 0.001162 10.3 10.2 10.2 8.7 10.2 8.7 11.9 0.000655 0.0006510 0.000646 0.000229 0.000638 0.000221 0.001097 169 1861 3 7
173 43388 -154 -164 -168 -207 -299 -174 -304 -20 0.0763209 0.2583170 0.5518591 0.0200794 8.4 8.4 8.3 6.7 8.3 6.6 10.2 0.001015 0.0010010 0.000998 0.000702 0.000990 0.000675 0.001379 9.3 9.2 9.3 7.4 9.2 7.3 11.3 0.000559 0.0005500 0.000532 0.000291 0.000541 0.000274 0.000864 307 1350 2 9
174 43929 -244 -311 -337 -476 -482 -346 -488 -63 0.1291585 0.3835616 0.6868885 0.1713061 4.2 4.1 4.0 2.6 4.1 2.5 6.0 0.001095 0.0010810 0.001065 0.000630 0.001066 0.000606 0.001607 4.3 4.2 4.2 2.6 4.2 2.4 6.3 0.000662 0.0006570 0.000643 0.000210 0.000642 0.000196 0.001127 488 765 3 4
175 4466C -272 -380 -415 -528 -538 -424 -543 -104 0.1917808 0.4853229 0.7612524 0.3672776 3.2 3.2 3.1 1.4 3.1 1.3 5.2 0.001239 0.0012300 0.001208 0.000644 0.001211 0.000625 0.001863 3.3 3.2 3.1 1.5 3.2 1.4 5.4 0.000681 0.0006770 0.000669 0.000199 0.000662 0.000194 0.001184 543 2220 8 6
176 46127 -110 -100 -95 -14 -213 -101 -206 -2 0.0724070 0.2544031 0.5694716 0.0254449 8.1 8.1 8.0 6.8 8.0 6.8 9.4 0.000481 0.0004620 0.000436 0.000198 0.000452 0.000170 0.000827 8.9 8.9 8.8 7.5 8.8 7.4 10.5 0.000551 0.0005500 0.000565 0.000077 0.000535 0.000071 0.001030 220 942 3 7
177 46621 -112 -88 -77 -12 -213 -82 -201 0 0.1076321 0.3444227 0.6536204 0.1160441 9.4 9.3 9.3 7.9 9.3 7.8 11.0 0.000855 0.0008380 0.000808 0.000496 0.000825 0.000469 0.001279 10.1 10.1 10.1 8.4 10.0 8.3 12.0 0.000665 0.0006610 0.000621 0.000124 0.000644 0.000123 0.001219 225 1424 3 8
178 46766 -239 -278 -293 -446 -469 -303 -478 -49 0.1017613 0.3170254 0.6125245 0.0699637 6.1 6.0 5.9 4.2 5.9 4.1 8.2 0.001113 0.0011050 0.001089 0.000613 0.001088 0.000597 0.001645 6.5 6.4 6.2 4.4 6.3 4.3 8.9 0.000815 0.0008090 0.000823 0.000386 0.000795 0.000375 0.001266 478 750 2 6
179 47B58 -227 -222 -220 -151 -441 -231 -432 -6 0.0626223 0.2211350 0.5205479 0.0076000 7.3 7.2 7.1 5.8 7.2 5.7 8.9 0.000543 0.0005380 0.000534 0.000342 0.000532 0.000334 0.000762 7.9 7.8 7.7 6.3 7.8 6.2 9.7 0.000448 0.0004450 0.000437 0.000218 0.000438 0.000209 0.000688 454 1380 3 4
180 50218 -254 -217 -201 -64 -486 -212 -463 0 0.0900196 0.2994129 0.6066536 0.0562514 8.3 8.2 8.1 6.7 8.2 6.6 10.0 0.000285 0.0002820 0.000286 0.000008 0.000273 0.000004 0.000574 8.9 8.9 8.7 7.1 8.8 7.0 11.0 0.000640 0.0006360 0.000625 0.000123 0.000619 0.000116 0.001171 509 1507 5 3
181 50473 -221 -122 -99 -12 -363 -105 -321 0 0.2739726 0.5440313 0.7749511 0.4770959 9.4 9.3 9.1 8.0 9.3 7.8 11.2 0.000963 0.0009440 0.000918 0.000582 0.000930 0.000555 0.001409 10.2 10.1 9.9 8.6 10.0 8.5 12.1 0.000606 0.0006060 0.000614 0.000080 0.000589 0.000080 0.001137 442 371 3 6
182 50E01 -230 -207 -198 -84 -441 -209 -425 -2 0.0782779 0.2720157 0.5694716 0.0302685 7.9 7.9 7.7 6.1 7.8 6.0 10.0 0.000728 0.0007180 0.000699 0.000287 0.000704 0.000271 0.001204 8.6 8.5 8.5 6.4 8.5 6.3 11.1 0.000448 0.0004440 0.000446 0.000072 0.000432 0.000063 0.000838 459 2534 4 6
183 51A77 -110 -125 -132 -208 -217 -137 -221 -19 0.0841487 0.2837573 0.5988258 0.0478552 5.9 5.8 5.8 4.4 5.8 4.3 7.4 0.001141 0.0011280 0.001101 0.000667 0.001113 0.000644 0.001663 6.3 6.3 6.3 4.7 6.2 4.6 8.1 0.000684 0.0006750 0.000656 0.000312 0.000662 0.000298 0.001091 221 1694 3 7
184 52462 -365 -422 -447 -711 -717 -463 -729 -62 0.0861057 0.2974560 0.6125245 0.0606574 5.1 5.0 4.7 3.4 5.0 3.3 7.2 0.000515 0.0005060 0.000511 0.000151 0.000494 0.000135 0.000910 5.4 5.3 5.1 3.4 5.3 3.3 7.8 0.000718 0.0007140 0.000711 0.000241 0.000699 0.000234 0.001213 730 71 2 9
185 52858 -230 -225 -223 -206 -445 -233 -439 -11 0.0665362 0.2387476 0.5440313 0.0131864 7.2 7.1 6.8 5.2 7.0 5.0 9.5 0.000995 0.0009910 0.001008 0.000419 0.000972 0.000412 0.001585 7.7 7.6 7.3 5.2 7.5 5.1 10.5 0.000659 0.0006550 0.000643 0.000109 0.000638 0.000104 0.001221 459 0 1 4
186 53002 -126 -123 -121 -28 -245 -127 -241 -5 0.0665362 0.2250489 0.5244618 0.0087231 7.3 7.3 7.2 5.9 7.2 5.8 8.8 0.000659 0.0006470 0.000605 0.000387 0.000637 0.000366 0.000971 7.9 7.8 7.7 6.2 7.8 6.2 9.6 0.000583 0.0005760 0.000575 0.000280 0.000567 0.000265 0.000913 252 2549 4 1
187 54516 -313 -236 -206 -13 -587 -219 -552 0 0.1174168 0.3679061 0.6692759 0.1412694 8.4 8.3 8.2 7.0 8.3 6.9 10.0 0.000294 0.0002850 0.000276 0.000081 0.000278 0.000066 0.000537 9.1 9.0 8.9 7.5 9.0 7.4 11.0 0.000500 0.0004960 0.000470 0.000036 0.000481 0.000028 0.000978 626 1555 3 6
188 55860 -80 -72 -68 -14 -153 -72 -147 -1 0.0802348 0.2641879 0.5733855 0.0307370 8.9 8.8 8.9 7.4 8.8 7.4 10.5 0.000822 0.0008210 0.000827 0.000148 0.000799 0.000140 0.001500 9.6 9.6 9.4 7.7 9.5 7.6 11.6 0.000659 0.0006550 0.000648 0.000111 0.000638 0.000102 0.001223 159 1858 6 5
189 56111 -55 -58 -60 -97 -108 -63 -108 -6 0.0763209 0.2485323 0.5538160 0.0221380 5.7 5.7 5.6 4.3 5.6 4.3 7.1 0.000901 0.0008980 0.000930 0.000217 0.000876 0.000207 0.001601 6.1 6.1 6.1 4.5 6.1 4.5 7.7 0.000649 0.0006460 0.000630 0.000098 0.000628 0.000094 0.001210 110 614 2 6
190 56141 -252 -350 -382 -490 -498 -390 -503 -94 0.1878669 0.4814090 0.7573386 0.3529079 3.7 3.7 3.6 1.8 3.6 1.7 5.8 0.001173 0.0011650 0.001143 0.000577 0.001145 0.000558 0.001797 3.9 3.9 3.8 1.8 3.8 1.8 6.2 0.000652 0.0006480 0.000644 0.000112 0.000631 0.000105 0.001201 503 3838 8 5
191 58646 -236 -238 -239 -296 -459 -250 -460 -16 0.0606654 0.2211350 0.5244618 0.0079669 7.0 6.9 6.8 5.5 6.9 5.4 8.7 0.000529 0.0005120 0.000463 0.000199 0.000500 0.000172 0.000919 7.4 7.3 7.2 5.6 7.3 5.5 9.4 0.000710 0.0007070 0.000689 0.000220 0.000691 0.000210 0.001212 472 2199 7 6
192 58709 -156 -162 -164 -278 -305 -172 -307 -16 0.0665362 0.2270059 0.5283757 0.0094220 6.0 6.0 6.0 4.7 6.0 4.6 7.5 0.000621 0.0006120 0.000594 0.000309 0.000601 0.000295 0.000963 6.4 6.4 6.3 4.9 6.4 4.9 8.1 0.000514 0.0005060 0.000487 0.000180 0.000494 0.000163 0.000883 312 351 2 8
193 59147 -248 -223 -214 -186 -472 -225 -451 -3 0.0939335 0.2935421 0.5831703 0.0446195 8.1 8.0 7.9 6.2 8.0 6.1 10.2 0.001053 0.0010420 0.001011 0.000577 0.001026 0.000560 0.001569 8.8 8.7 8.5 6.7 8.7 6.6 11.2 0.000597 0.0005940 0.000606 0.000071 0.000578 0.000069 0.001132 495 349 2 7
194 59843 -148 -160 -166 -282 -290 -173 -294 -18 0.0684932 0.2504892 0.5636008 0.0211890 5.9 5.8 5.7 4.6 5.8 4.6 7.2 0.000562 0.0005530 0.000544 0.000344 0.000545 0.000328 0.000815 6.0 6.0 6.0 4.6 6.0 4.5 7.6 0.000703 0.0006930 0.000680 0.000389 0.000682 0.000374 0.001056 296 1467 5 8
195 60122 -172 -163 -159 -63 -333 -167 -324 -4 0.0724070 0.2446184 0.5440313 0.0147853 7.5 7.4 7.4 6.0 7.4 5.9 9.1 0.000835 0.0008260 0.000803 0.000564 0.000816 0.000547 0.001138 8.0 8.0 7.8 6.4 7.9 6.3 9.9 0.000582 0.0005790 0.000580 0.000202 0.000566 0.000195 0.000972 345 70 2 6
196 62159 -240 -183 -160 -12 -452 -170 -425 0 0.1154599 0.3600783 0.6634051 0.1329510 8.5 8.4 8.2 6.6 8.4 6.5 10.7 0.000751 0.0007440 0.000727 0.000198 0.000726 0.000189 0.001331 9.2 9.1 9.0 6.8 9.0 6.7 11.8 0.000660 0.0006570 0.000644 0.000112 0.000640 0.000103 0.001218 481 2567 7 1
197 62447 -186 -160 -149 -36 -356 -157 -339 0 0.0880626 0.2935421 0.5988258 0.0508485 8.1 8.1 7.9 6.3 8.0 6.1 10.3 0.000807 0.0008040 0.000802 0.000245 0.000785 0.000239 0.001382 8.7 8.7 8.5 6.4 8.6 6.3 11.3 0.000660 0.0006560 0.000646 0.000107 0.000639 0.000098 0.001220 372 786 3 6
198 63653 -186 -121 -102 -14 -329 -109 -299 0 0.1937378 0.4579256 0.7221135 0.2849895 8.1 7.9 7.8 6.3 7.9 6.2 10.1 0.001440 0.0014270 0.001397 0.001018 0.001413 0.000999 0.001912 8.6 8.5 8.2 6.7 8.4 6.5 11.0 0.000997 0.0009880 0.000973 0.000579 0.000974 0.000566 0.001449 371 752 3 6
199 64939 -262 -266 -267 -317 -510 -279 -516 -27 0.0684932 0.2407045 0.5440313 0.0133410 7.0 6.9 6.7 5.0 6.8 4.8 9.4 0.000872 0.0008690 0.000880 0.000231 0.000849 0.000221 0.001527 7.5 7.4 7.2 5.1 7.3 4.9 10.3 0.000660 0.0006570 0.000675 0.000109 0.000640 0.000104 0.001220 525 1478 5 6
200 65143 -356 -513 -556 -692 -705 -566 -711 -177 0.2485323 0.5342466 0.7788650 0.4643832 4.5 4.5 4.5 2.3 4.4 2.2 7.0 0.001182 0.0011670 0.001133 0.000677 0.001150 0.000648 0.001739 4.8 4.7 4.6 2.4 4.6 2.3 7.5 0.000712 0.0007070 0.000704 0.000277 0.000693 0.000265 0.001171 711 1380 5 3
201 66F7D -312 -256 -236 -141 -587 -249 -557 -1 0.1076321 0.3326810 0.6223092 0.0852901 7.7 7.6 7.3 5.9 7.5 5.8 9.9 0.000790 0.0007800 0.000758 0.000380 0.000767 0.000361 0.001234 8.3 8.2 7.9 6.3 8.1 6.2 10.8 0.000631 0.0006260 0.000627 0.000201 0.000612 0.000188 0.001079 623 3051 6 5
202 70486 -243 -225 -218 -92 -469 -229 -453 -3 0.0743640 0.2563601 0.5557730 0.0203340 7.0 6.9 6.6 5.3 6.8 5.2 9.0 0.000859 0.0008500 0.000834 0.000412 0.000835 0.000397 0.001340 7.4 7.3 7.1 5.5 7.2 5.4 9.7 0.000721 0.0007150 0.000687 0.000309 0.000702 0.000300 0.001151 486 380 2 9
203 70725 -170 -159 -155 -119 -328 -163 -319 -3 0.0743640 0.2583170 0.5538160 0.0199708 7.4 7.3 7.2 5.8 7.3 5.7 9.3 0.001130 0.0011190 0.001100 0.000734 0.001107 0.000713 0.001563 8.0 7.9 7.6 6.2 7.8 6.1 10.1 0.000877 0.0008690 0.000853 0.000475 0.000857 0.000465 0.001305 341 1693 3 2
204 71112 -200 -231 -245 -381 -394 -254 -401 -35 0.0861057 0.2896282 0.6086106 0.0555361 4.8 4.7 4.7 3.5 4.7 3.4 6.3 0.000639 0.0006290 0.000610 0.000189 0.000614 0.000173 0.001120 4.9 4.9 4.8 3.4 4.8 3.3 6.7 0.000829 0.0008220 0.000819 0.000351 0.000806 0.000340 0.001333 401 1105 3 6
205 71353 -254 -246 -243 -185 -492 -255 -484 -7 0.0606654 0.2250489 0.5225049 0.0082118 6.9 6.8 6.6 5.3 6.8 5.2 8.7 0.000569 0.0005560 0.000520 0.000307 0.000547 0.000287 0.000875 7.5 7.4 7.2 5.8 7.4 5.7 9.5 0.000580 0.0005750 0.000572 0.000196 0.000563 0.000186 0.000981 507 178 2 7
206 72320 -182 -115 -94 -11 -326 -101 -296 0 0.1859100 0.4657534 0.7377691 0.3108799 9.2 9.1 9.0 7.3 9.0 7.2 11.3 0.001060 0.0010530 0.001055 0.000511 0.001035 0.000499 0.001638 9.9 9.8 9.7 7.6 9.7 7.4 12.5 0.000659 0.0006570 0.000669 0.000106 0.000639 0.000110 0.001227 364 2200 8 8
207 72507 -230 -276 -296 -437 -452 -306 -459 -45 0.0978474 0.3248532 0.6438356 0.0958386 4.4 4.3 4.2 2.7 4.3 2.7 6.2 0.000746 0.0007290 0.000689 0.000242 0.000711 0.000212 0.001311 4.6 4.5 4.5 2.7 4.4 2.6 6.6 0.000685 0.0006820 0.000688 0.000148 0.000665 0.000145 0.001237 459 359 2 7
208 73050 -246 -216 -202 -21 -472 -214 -455 -1 0.0782779 0.2778865 0.5870841 0.0401692 7.9 7.8 7.8 6.4 7.8 6.3 9.6 0.000417 0.0004130 0.000424 0.000139 0.000404 0.000129 0.000711 8.5 8.5 8.4 6.8 8.4 6.7 10.5 0.000453 0.0004490 0.000438 0.000078 0.000436 0.000071 0.000843 492 367 2 4
209 73655 -58 -60 -62 -100 -113 -65 -113 -6 0.0763209 0.2407045 0.5440313 0.0187506 5.1 5.1 5.1 3.9 5.0 3.8 6.3 0.001185 0.0011770 0.001170 0.000533 0.001156 0.000516 0.001875 5.2 5.2 5.2 3.9 5.2 3.8 6.7 0.000858 0.0008460 0.000797 0.000328 0.000828 0.000306 0.001430 115 74 2 7
210 7366A -174 -143 -129 -16 -332 -137 -315 0 0.0978474 0.3131115 0.6281800 0.0783929 8.6 8.6 8.4 7.2 8.5 7.1 10.3 0.000726 0.0007180 0.000708 0.000486 0.000710 0.000473 0.000996 9.6 9.6 9.4 8.0 9.5 7.9 11.5 0.000663 0.0006570 0.000646 0.000322 0.000646 0.000311 0.001025 349 1554 4 4
211 74770 -132 -121 -116 -20 -254 -122 -245 -2 0.0782779 0.2622309 0.5655577 0.0251054 8.4 8.4 8.3 7.0 8.3 7.0 10.0 0.000896 0.0008890 0.000854 0.000371 0.000872 0.000359 0.001438 9.2 9.1 9.0 7.6 9.1 7.5 10.9 0.000463 0.0004640 0.000472 -0.000006 0.000450 -0.000004 0.000926 264 1491 4 7
212 7582C -232 -275 -291 -428 -457 -301 -465 -45 0.0978474 0.3248532 0.6242661 0.0811822 5.9 5.8 5.7 3.7 5.8 3.6 8.4 0.001027 0.0010230 0.001007 0.000426 0.001004 0.000416 0.001642 6.3 6.2 5.8 3.7 6.1 3.5 9.3 0.000659 0.0006560 0.000665 0.000113 0.000639 0.000109 0.001221 465 942 3 4
213 7634C -78 -83 -85 -143 -153 -88 -154 -8 0.0724070 0.2407045 0.5420744 0.0157137 6.2 6.2 6.2 4.8 6.2 4.7 7.8 0.000962 0.0009580 0.000946 0.000289 0.000937 0.000278 0.001651 6.7 6.6 6.5 4.7 6.6 4.7 8.7 0.000659 0.0006560 0.000642 0.000111 0.000639 0.000108 0.001221 157 695 2 5
214 77067 -184 -200 -207 -344 -359 -215 -365 -25 0.0743640 0.2583170 0.5655577 0.0233964 6.0 6.0 5.9 4.4 5.9 4.4 7.7 0.000742 0.0007320 0.000712 0.000377 0.000720 0.000360 0.001141 6.4 6.3 6.2 4.6 6.3 4.5 8.3 0.000671 0.0006670 0.000649 0.000136 0.000651 0.000131 0.001219 367 2565 8 6
215 77808 -352 -204 -171 -32 -581 -181 -512 0 0.2739726 0.5303327 0.7573386 0.4356424 8.3 8.2 8.1 6.2 8.1 6.0 10.9 0.001050 0.0010370 0.001025 0.000651 0.001024 0.000629 0.001495 9.0 8.8 8.6 6.4 8.8 6.2 12.0 0.000660 0.0006560 0.000650 0.000109 0.000639 0.000099 0.001219 705 1496 3 8
216 78089 -310 -323 -329 -417 -604 -343 -615 -39 0.0724070 0.2446184 0.5459883 0.0160620 6.7 6.7 6.4 4.8 6.6 4.7 8.9 0.000739 0.0007310 0.000747 0.000326 0.000717 0.000312 0.001181 7.3 7.2 6.9 5.1 7.1 5.0 9.8 0.000612 0.0006090 0.000592 0.000094 0.000592 0.000092 0.001140 621 1081 4 5
217 78483 -300 -282 -274 -106 -580 -288 -562 -4 0.0684932 0.2465753 0.5459883 0.0162310 6.9 6.8 6.6 5.2 6.7 5.1 8.9 0.000630 0.0006200 0.000611 0.000183 0.000605 0.000168 0.001119 7.3 7.2 7.1 5.4 7.2 5.3 9.6 0.000516 0.0005130 0.000511 0.000097 0.000500 0.000087 0.000943 600 1565 5 8
218 78624 -259 -226 -215 -166 -492 -226 -469 -1 0.0958904 0.3033268 0.5890411 0.0531803 7.0 6.8 6.6 5.0 6.8 4.8 9.4 0.001239 0.0012250 0.001186 0.000862 0.001212 0.000838 0.001666 7.3 7.2 6.6 5.0 7.1 4.9 10.1 0.001070 0.0010610 0.001015 0.000652 0.001047 0.000634 0.001522 518 2182 6 6
219 78746 -161 -133 -121 -16 -307 -129 -291 0 0.0958904 0.3111546 0.6223092 0.0731348 8.7 8.6 8.5 6.9 8.6 6.8 10.6 0.000788 0.0007720 0.000735 0.000418 0.000759 0.000393 0.001211 9.3 9.3 9.1 7.1 9.2 7.0 11.8 0.000659 0.0006555 0.000631 0.000110 0.000639 0.000098 0.001217 322 1834 5 7
220 79812 -260 -258 -256 -288 -505 -269 -498 -11 0.0665362 0.2289628 0.5322896 0.0101464 6.6 6.5 6.2 4.8 6.4 4.7 8.6 0.000918 0.0009080 0.000893 0.000519 0.000895 0.000501 0.001353 6.9 6.8 6.5 4.9 6.7 4.8 9.3 0.000781 0.0007760 0.000769 0.000402 0.000764 0.000388 0.001181 521 350 2 8
221 79839 -59 -58 -58 -21 -115 -61 -113 -4 0.0743640 0.2309198 0.5225049 0.0133761 7.5 7.5 7.6 6.2 7.5 6.2 8.9 0.000645 0.0006400 0.000630 0.000371 0.000631 0.000361 0.000937 7.9 7.9 8.0 6.4 7.9 6.3 9.5 0.000690 0.0006860 0.000703 0.000141 0.000668 0.000131 0.001253 118 414 2 4
222 79871 -68 -67 -66 -33 -133 -70 -131 -4 0.0724070 0.2309198 0.5244618 0.0122806 7.7 7.7 7.6 6.5 7.6 6.5 8.9 0.000787 0.0007790 0.000772 0.000502 0.000769 0.000489 0.001098 8.4 8.3 8.3 7.0 8.3 7.0 9.8 0.000649 0.0006450 0.000625 0.000336 0.000634 0.000327 0.000975 137 349 2 7
223 79968 -46 -45 -44 -14 -90 -46 -88 -3 0.0763209 0.2387476 0.5401174 0.0187208 6.9 6.9 6.8 5.6 6.8 5.5 8.3 0.001322 0.0013100 0.001301 0.000846 0.001295 0.000825 0.001833 7.1 7.1 7.1 5.3 7.1 5.3 9.0 0.001123 0.0011120 0.001069 0.000660 0.001096 0.000639 0.001626 93 378 2 7
224 79987 -65 -62 -61 -18 -126 -64 -123 -3 0.0743640 0.2407045 0.5420744 0.0169735 8.3 8.3 8.3 6.7 8.2 6.7 10.0 0.000680 0.0006780 0.000653 0.000115 0.000660 0.000114 0.001257 9.0 8.9 8.8 7.0 8.9 6.9 11.1 0.000660 0.0006570 0.000648 0.000108 0.000640 0.000103 0.001222 130 347 2 6
225 80010 -287 -332 -350 -517 -563 -362 -574 -55 0.0958904 0.3052838 0.6105675 0.0626915 6.1 6.0 5.7 3.9 5.9 3.7 8.6 0.000833 0.0008310 0.000825 0.000241 0.000812 0.000235 0.001427 6.5 6.4 6.4 3.8 6.3 3.7 9.5 0.000660 0.0006560 0.000653 0.000112 0.000639 0.000104 0.001220 574 784 2 4
226 80043 -248 -217 -205 -131 -473 -216 -452 -1 0.0880626 0.2935421 0.5870841 0.0457457 7.6 7.5 7.4 5.5 7.4 5.4 10.1 0.000950 0.0009420 0.000936 0.000380 0.000924 0.000372 0.001556 8.2 8.1 7.8 5.7 8.0 5.5 11.0 0.000660 0.0006570 0.000642 0.000108 0.000640 0.000103 0.001222 495 381 2 3
227 80157 -72 -73 -74 -113 -140 -78 -139 -6 0.0724070 0.2328767 0.5264188 0.0125365 6.7 6.7 6.6 5.0 6.7 5.0 8.5 0.001125 0.0011200 0.001123 0.000533 0.001101 0.000516 0.001741 7.2 7.2 7.1 5.1 7.1 5.0 9.4 0.000660 0.0006560 0.000641 0.000110 0.000640 0.000105 0.001225 143 377 2 8
228 80221 -249 -258 -260 -272 -485 -271 -493 -33 0.0763209 0.2485323 0.5459883 0.0164897 6.9 6.8 6.5 4.7 6.7 4.6 9.4 0.001019 0.0010120 0.000987 0.000438 0.000993 0.000425 0.001623 7.4 7.3 7.0 4.7 7.2 4.6 10.4 0.000659 0.0006560 0.000639 0.000107 0.000639 0.000102 0.001225 498 348 2 8
229 80337 -312 -324 -329 -367 -607 -343 -617 -37 0.0684932 0.2367906 0.5342466 0.0126564 6.4 6.3 6.1 4.6 6.2 4.5 8.5 0.000577 0.0005680 0.000543 0.000114 0.000552 0.000095 0.001070 6.8 6.7 6.4 4.7 6.6 4.6 9.2 0.000663 0.0006590 0.000623 0.000145 0.000643 0.000136 0.001192 623 413 2 6
230 80450 -254 -339 -370 -496 -503 -379 -508 -80 0.1565558 0.4344423 0.7260274 0.2601709 4.6 4.5 4.3 2.3 4.4 2.1 7.3 0.001133 0.0011300 0.001135 0.000485 0.001109 0.000476 0.001794 4.8 4.7 4.5 2.0 4.6 1.9 8.0 0.000659 0.0006550 0.000672 0.000109 0.000638 0.000106 0.001220 508 370 2 6
231 83948 -248 -193 -170 -18 -468 -181 -442 0 0.1076321 0.3424658 0.6555773 0.1128510 8.7 8.6 8.5 6.8 8.6 6.7 10.8 0.000585 0.0005800 0.000592 0.000056 0.000563 0.000050 0.001134 9.4 9.3 9.1 7.1 9.2 7.0 11.9 0.000660 0.0006570 0.000642 0.000108 0.000640 0.000105 0.001227 495 223 2 7
232 84001 -66 -66 -66 -75 -129 -69 -128 -4 0.0724070 0.2289628 0.5205479 0.0120087 7.3 7.3 7.2 5.6 7.2 5.5 9.1 0.001201 0.0011940 0.001188 0.000603 0.001174 0.000589 0.001835 7.8 7.8 7.8 5.7 7.8 5.7 10.1 0.000660 0.0006570 0.000663 0.000112 0.000640 0.000104 0.001222 133 1027 4 7
233 84596 -288 -270 -263 -198 -556 -275 -538 -3 0.0724070 0.2563601 0.5538160 0.0192025 7.4 7.3 7.0 5.3 7.2 5.1 9.8 0.000742 0.0007370 0.000768 0.000201 0.000719 0.000185 0.001305 7.9 7.8 7.4 5.4 7.7 5.2 10.8 0.000661 0.0006570 0.000647 0.000110 0.000640 0.000108 0.001224 576 683 3 4
234 84976 -252 -195 -173 -18 -473 -183 -445 0 0.1154599 0.3502935 0.6555773 0.1188578 8.2 8.2 8.0 6.7 8.1 6.6 10.1 0.000497 0.0004950 0.000510 -0.000011 0.000479 -0.000013 0.001018 9.0 8.9 8.7 7.1 8.8 7.0 11.1 0.000611 0.0006080 0.000600 0.000081 0.000592 0.000075 0.001158 503 2571 7 3
235 84D5D -70 -69 -68 -43 -137 -72 -135 -4 0.0724070 0.2250489 0.5244618 0.0118033 7.7 7.7 7.7 6.2 7.6 6.1 9.3 0.000731 0.0007310 0.000734 0.000104 0.000711 0.000105 0.001363 8.2 8.2 8.2 6.3 8.2 6.3 10.3 0.000660 0.0006560 0.000619 0.000111 0.000639 0.000107 0.001222 141 1134 5 7
236 85498 -272 -198 -177 -78 -492 -187 -452 0 0.1682975 0.4148728 0.6771037 0.1943774 7.6 7.4 7.1 5.6 7.4 5.5 9.9 0.001390 0.0013760 0.001350 0.000925 0.001360 0.000902 0.001903 8.1 7.9 7.6 6.0 7.9 5.8 10.7 0.000862 0.0008550 0.000835 0.000494 0.000843 0.000484 0.001255 544 730 4 5
237 85589 -72 -76 -78 -125 -140 -81 -140 -8 0.0743640 0.2407045 0.5479452 0.0182374 5.0 5.0 5.0 3.8 5.0 3.8 6.2 0.000583 0.0005790 0.000583 0.000061 0.000562 0.000049 0.001123 5.1 5.1 5.1 3.7 5.1 3.7 6.6 0.000780 0.0007710 0.000746 0.000282 0.000755 0.000268 0.001309 143 728 2 6
238 85707 -194 -238 -256 -373 -381 -264 -387 -45 0.1154599 0.3502935 0.6594912 0.1230069 4.9 4.8 4.7 3.2 4.8 3.1 6.8 0.001190 0.0011780 0.001154 0.000736 0.001163 0.000713 0.001688 5.1 5.1 4.9 3.2 5.0 3.1 7.3 0.000844 0.0008340 0.000806 0.000415 0.000819 0.000398 0.001304 387 502 2 4
239 85730 -228 -186 -168 -32 -433 -178 -410 0 0.0978474 0.3189824 0.6301370 0.0808739 8.5 8.5 8.4 7.1 8.4 7.0 10.2 0.000477 0.0004740 0.000459 0.000219 0.000465 0.000214 0.000745 9.3 9.2 9.1 7.6 9.1 7.5 11.2 0.000431 0.0004290 0.000417 0.000067 0.000417 0.000063 0.000800 455 1093 3 9
240 86034 -178 -191 -196 -269 -349 -204 -354 -24 0.0763209 0.2544031 0.5518591 0.0196754 6.6 6.6 6.5 5.0 6.5 4.9 8.5 0.001007 0.0010010 0.001004 0.000547 0.000986 0.000538 0.001490 7.1 7.0 7.0 5.2 7.0 5.1 9.1 0.000651 0.0006490 0.000651 0.000118 0.000632 0.000113 0.001201 357 301 2 2
241 86076 -238 -211 -198 -40 -457 -209 -439 -1 0.0821918 0.2759295 0.5870841 0.0378136 7.7 7.7 7.6 6.2 7.6 6.1 9.5 0.000377 0.0003710 0.000345 -0.000015 0.000358 -0.000025 0.000791 8.3 8.3 8.2 6.5 8.2 6.4 10.4 0.000639 0.0006360 0.000647 0.000114 0.000620 0.000111 0.001178 477 1329 5 11
242 86335 -252 -287 -303 -481 -496 -315 -504 -40 0.0802348 0.2837573 0.5988258 0.0479759 5.5 5.4 5.2 3.8 5.4 3.7 7.4 0.000752 0.0007460 0.000742 0.000206 0.000729 0.000194 0.001318 5.7 5.6 5.4 3.6 5.5 3.5 7.9 0.000746 0.0007400 0.000733 0.000217 0.000724 0.000206 0.001301 505 730 4 4
243 86426 -320 -122 -93 -13 -402 -99 -340 0 0.4677104 0.6888454 0.8532290 0.9692861 9.9 9.8 9.7 8.2 9.7 8.1 11.8 0.000889 0.0008800 0.000862 0.000567 0.000869 0.000548 0.001240 10.8 10.7 10.6 8.9 10.6 8.8 12.9 0.000626 0.0006230 0.000616 0.000090 0.000606 0.000082 0.001174 639 2179 6 4
244 86875 -231 -307 -336 -449 -457 -345 -462 -65 0.1409002 0.4187867 0.7260274 0.2461540 3.1 3.0 2.7 1.0 2.9 0.8 5.7 0.001134 0.0011280 0.001110 0.000435 0.001105 0.000428 0.001857 3.2 3.1 2.8 0.5 3.0 0.4 6.2 0.000660 0.0006570 0.000669 0.000108 0.000639 0.000099 0.001215 462 712 3 6
245 86885 -138 -87 -70 -11 -248 -75 -227 0 0.1761252 0.4579256 0.7397260 0.3100269 10.3 10.2 10.1 8.9 10.2 8.9 11.7 0.000735 0.0007290 0.000719 0.000469 0.000720 0.000458 0.001024 11.1 11.0 10.9 9.6 11.0 9.5 12.7 0.000584 0.0005800 0.000576 0.000341 0.000572 0.000332 0.000840 275 2200 7 8
246 86918 -254 -279 -291 -469 -499 -302 -507 -35 0.0724070 0.2622309 0.5714286 0.0278284 6.0 5.9 5.7 4.4 5.8 4.2 7.8 0.000527 0.0005250 0.000531 0.000113 0.000512 0.000108 0.000950 6.2 6.2 6.0 4.3 6.1 4.2 8.4 0.000712 0.0007080 0.000683 0.000188 0.000691 0.000177 0.001255 509 1549 3 3
247 87453 -72 -78 -82 -132 -140 -85 -142 -10 0.0763209 0.2583170 0.5714286 0.0303070 4.3 4.3 4.3 3.0 4.3 3.0 5.7 0.001298 0.0012850 0.001261 0.000804 0.001268 0.000773 0.001833 4.4 4.4 4.4 3.0 4.4 2.9 5.9 0.000900 0.0008880 0.000880 0.000456 0.000873 0.000435 0.001388 143 1471 5 6
248 87479 -189 -180 -175 -18 -367 -185 -357 -4 0.0665362 0.2328767 0.5381605 0.0117775 7.7 7.6 7.6 6.0 7.6 5.9 9.6 0.000490 0.0004870 0.000454 0.000061 0.000473 0.000051 0.000923 8.3 8.2 8.1 6.1 8.2 6.0 10.6 0.000660 0.0006570 0.000638 0.000109 0.000640 0.000105 0.001221 378 351 2 4
249 87517 -238 -221 -213 -12 -463 -226 -451 -2 0.0547945 0.2191781 0.5479452 0.0202026 6.6 6.6 6.4 5.2 6.5 5.1 8.3 0.000395 0.0003910 0.000380 0.000205 0.000385 0.000198 0.000597 6.5 6.5 6.3 4.7 6.4 4.6 8.6 0.000387 0.0003870 0.000377 0.000012 0.000375 0.000009 0.000760 475 632 2 3
250 88415 -358 -439 -468 -695 -703 -482 -715 -87 0.1213307 0.3639922 0.6555773 0.1275851 5.5 5.4 5.3 3.4 5.3 3.2 7.9 0.001022 0.0010100 0.000977 0.000548 0.000993 0.000529 0.001545 5.8 5.7 5.6 3.3 5.6 3.2 8.5 0.000740 0.0007350 0.000718 0.000223 0.000718 0.000214 0.001278 715 1082 3 3
251 88507 -111 -109 -108 -20 -216 -114 -213 -6 0.0684932 0.2250489 0.5185910 0.0085719 7.2 7.1 7.1 5.8 7.1 5.7 8.6 0.000490 0.0004850 0.000476 0.000255 0.000478 0.000249 0.000743 7.7 7.7 7.8 6.1 7.7 6.1 9.4 0.000647 0.0006440 0.000626 0.000105 0.000628 0.000102 0.001201 222 1334 3 6
252 88652 -179 -213 -231 -345 -353 -239 -358 -31 0.0861057 0.3052838 0.6418787 0.0875657 4.4 4.4 4.3 3.0 4.3 3.0 5.9 0.000540 0.0005390 0.000574 -0.000087 0.000519 -0.000088 0.001176 4.2 4.2 4.1 2.3 4.1 2.3 6.1 0.000803 0.0007920 0.000775 0.000248 0.000775 0.000229 0.001394 358 1952 4 9
253 89282 -284 -361 -395 -556 -561 -407 -568 -61 0.1076321 0.3659491 0.6947162 0.1702587 4.1 4.0 3.9 2.5 4.0 2.3 6.0 0.000563 0.0005570 0.000562 -0.000015 0.000539 -0.000023 0.001169 4.0 3.9 3.7 1.8 3.8 1.7 6.3 0.000827 0.0008180 0.000835 0.000277 0.000799 0.000261 0.001415 568 2197 9 6
254 90599 -252 -313 -337 -485 -498 -347 -505 -60 0.1193738 0.3620352 0.6653620 0.1341694 4.9 4.8 4.8 3.0 4.7 2.9 7.0 0.001096 0.0010860 0.001058 0.000586 0.001069 0.000571 0.001649 5.0 5.0 4.9 2.9 4.9 2.8 7.4 0.000712 0.0007070 0.000694 0.000180 0.000691 0.000169 0.001259 505 1434 7 9
255 90697 -127 -124 -122 -92 -247 -128 -243 -5 0.0665362 0.2270059 0.5244618 0.0088832 7.3 7.3 7.3 5.8 7.2 5.8 8.9 0.000673 0.0006620 0.000633 0.000348 0.000651 0.000326 0.001034 7.9 7.9 7.8 6.2 7.8 6.1 9.7 0.000650 0.0006470 0.000651 0.000106 0.000631 0.000103 0.001204 254 406 3 8
256 91036 -238 -105 -80 -11 -345 -85 -294 0 0.3816047 0.6340509 0.8297456 0.7647237 9.1 9.0 8.8 7.5 9.0 7.3 11.0 0.001115 0.0011030 0.001085 0.000770 0.001091 0.000746 0.001503 9.7 9.6 9.5 7.9 9.6 7.8 11.9 0.000690 0.0006870 0.000683 0.000152 0.000670 0.000149 0.001246 476 1939 3 5
257 91426 -189 -178 -174 -14 -367 -183 -357 -4 0.0645793 0.2328767 0.5420744 0.0129389 7.3 7.2 7.2 6.1 7.2 6.0 8.6 0.000466 0.0004610 0.000444 0.000287 0.000455 0.000279 0.000660 8.1 8.0 7.9 6.7 8.0 6.6 9.6 0.000477 0.0004720 0.000455 0.000121 0.000461 0.000111 0.000851 378 379 2 6
258 92210 -196 -73 -55 -10 -244 -59 -206 0 0.4735812 0.6927593 0.8551859 0.9952802 10.2 10.1 9.9 8.7 10.0 8.6 11.8 0.001117 0.0011120 0.001103 0.000837 0.001103 0.000826 0.001412 10.9 10.8 10.7 9.3 10.8 9.2 12.9 0.000927 0.0009230 0.000916 0.000597 0.000912 0.000590 0.001267 391 837 3 7
259 92299 -174 -133 -116 -19 -327 -123 -307 0 0.1154599 0.3581213 0.6634051 0.1295858 8.9 8.8 8.7 7.6 8.8 7.5 10.5 0.000632 0.0006270 0.000629 0.000166 0.000612 0.000154 0.001117 9.6 9.5 9.3 8.1 9.5 8.0 11.4 0.000642 0.0006390 0.000623 0.000134 0.000624 0.000128 0.001157 347 1463 5 4
260 93678 -229 -237 -240 -309 -447 -251 -453 -25 0.0665362 0.2348337 0.5322896 0.0106538 6.8 6.8 6.7 4.9 6.7 4.8 9.1 0.000764 0.0007450 0.000712 0.000341 0.000730 0.000311 0.001256 7.3 7.3 7.1 4.9 7.2 4.8 10.0 0.000660 0.0006570 0.000679 0.000109 0.000640 0.000103 0.001224 458 918 2 8
261 93706 -174 -181 -184 -238 -340 -193 -344 -18 0.0684932 0.2367906 0.5342466 0.0113046 6.8 6.8 6.6 4.9 6.7 4.8 9.0 0.000925 0.0009210 0.000923 0.000345 0.000902 0.000335 0.001523 7.3 7.3 7.0 4.9 7.2 4.8 9.9 0.000661 0.0006580 0.000625 0.000114 0.000641 0.000108 0.001219 349 708 3 5
262 95733 -230 -191 -175 -32 -437 -185 -414 0 0.1017613 0.3209393 0.6203523 0.0743335 7.9 7.9 7.6 5.9 7.8 5.8 10.3 0.000944 0.0009350 0.000924 0.000485 0.000920 0.000464 0.001430 8.5 8.5 8.3 6.1 8.4 5.9 11.4 0.000658 0.0006560 0.000695 0.000108 0.000639 0.000107 0.001222 461 1191 3 6
263 96261 -170 -185 -192 -326 -333 -200 -338 -22 0.0704501 0.2563601 0.5675147 0.0241859 5.5 5.4 5.3 4.0 5.4 3.9 7.1 0.000900 0.0008890 0.000867 0.000502 0.000876 0.000482 0.001334 5.7 5.6 5.6 4.1 5.6 4.0 7.5 0.000699 0.0006930 0.000681 0.000336 0.000681 0.000324 0.001088 340 1418 3 5
264 96353 -146 -115 -103 -13 -276 -109 -259 0 0.1154599 0.3483366 0.6477495 0.1131757 9.0 9.0 9.0 7.4 8.9 7.3 10.7 0.000913 0.0009010 0.000874 0.000513 0.000887 0.000492 0.001352 9.8 9.7 9.6 8.0 9.7 7.9 11.7 0.000639 0.0006360 0.000638 0.000099 0.000620 0.000097 0.001190 293 816 3 4
265 96382 -273 -279 -282 -358 -531 -294 -538 -26 0.0626223 0.2270059 0.5303327 0.0099502 6.8 6.7 6.5 5.0 6.6 5.0 8.7 0.000538 0.0005330 0.000530 0.000150 0.000521 0.000142 0.000945 7.2 7.1 6.9 5.2 7.0 5.1 9.4 0.000697 0.0006920 0.000693 0.000177 0.000677 0.000171 0.001238 546 1818 7 5
266 96419 -162 -155 -153 -22 -314 -160 -307 -4 0.0645793 0.2270059 0.5303327 0.0098524 7.6 7.6 7.4 5.9 7.5 5.9 9.5 0.000564 0.0005560 0.000552 0.000205 0.000544 0.000188 0.000950 8.2 8.2 8.0 6.1 8.1 6.0 10.5 0.000659 0.0006560 0.000645 0.000108 0.000639 0.000102 0.001221 323 349 2 2
267 96B79 -210 -207 -206 -236 -408 -216 -398 -7 0.0704501 0.2348337 0.5362035 0.0112173 7.5 7.5 7.4 5.8 7.4 5.7 9.5 0.000896 0.0008800 0.000841 0.000472 0.000865 0.000445 0.001373 8.3 8.2 8.1 6.4 8.1 6.3 10.5 0.000707 0.0006990 0.000678 0.000253 0.000684 0.000239 0.001193 421 1242 2 4
268 98152 -230 -250 -258 -438 -451 -269 -459 -30 0.0704501 0.2544031 0.5596869 0.0219019 6.3 6.2 6.0 4.4 6.2 4.3 8.5 0.000669 0.0006660 0.000660 0.000195 0.000650 0.000183 0.001159 6.7 6.7 6.6 4.3 6.6 4.3 9.4 0.000662 0.0006580 0.000638 0.000114 0.000641 0.000108 0.001226 461 742 2 7
269 98195 -108 -112 -114 -200 -210 -120 -211 -11 0.0704501 0.2367906 0.5381605 0.0122514 5.9 5.8 5.7 4.5 5.8 4.4 7.3 0.001127 0.0011160 0.001092 0.000744 0.001103 0.000722 0.001547 6.1 6.1 6.0 4.5 6.0 4.5 7.8 0.000769 0.0007620 0.000749 0.000269 0.000747 0.000261 0.001299 215 349 2 6
270 98521 -241 -323 -353 -470 -477 -362 -482 -70 0.1448141 0.4344423 0.7299413 0.2649646 3.7 3.6 3.5 1.5 3.6 1.4 6.3 0.001102 0.0010960 0.001032 0.000430 0.001074 0.000428 0.001802 3.9 3.8 3.7 1.2 3.7 1.1 6.9 0.000659 0.0006560 0.000652 0.000110 0.000639 0.000108 0.001227 482 345 2 3
271 99121 -172 -191 -200 -333 -338 -208 -345 -26 0.0763209 0.2661448 0.5792564 0.0322792 5.5 5.4 5.5 3.9 5.4 3.8 7.2 0.000767 0.0007510 0.000712 0.000286 0.000734 0.000259 0.001310 5.7 5.7 5.7 3.9 5.6 3.9 7.7 0.000695 0.0006900 0.000692 0.000157 0.000673 0.000153 0.001254 345 869 3 5
272 99842 -186 -160 -148 -30 -357 -157 -340 0 0.0880626 0.2954990 0.6007828 0.0531956 8.0 7.9 7.7 6.4 7.9 6.3 9.8 0.000724 0.0007150 0.000720 0.000300 0.000701 0.000282 0.001185 8.5 8.5 8.2 6.7 8.4 6.6 10.6 0.000707 0.0007010 0.000700 0.000318 0.000688 0.000305 0.001122 373 537 2 8
273 A2B2C -256 -275 -282 -348 -498 -293 -508 -39 0.0821918 0.2720157 0.5636008 0.0291650 6.7 6.6 6.6 4.4 6.6 4.3 9.4 0.001116 0.0011090 0.001120 0.000528 0.001090 0.000516 0.001738 7.2 7.1 6.8 4.4 7.0 4.3 10.3 0.000659 0.0006560 0.000661 0.000112 0.000639 0.000108 0.001227 511 3081 4 4
274 A3039 -271 -356 -387 -529 -536 -396 -542 -77 0.1428571 0.4207436 0.7084149 0.2280764 5.0 4.9 4.6 2.6 4.8 2.5 7.6 0.001060 0.0010590 0.001073 0.000425 0.001038 0.000420 0.001706 5.2 5.1 5.0 2.4 5.0 2.3 8.3 0.000660 0.0006570 0.000648 0.000110 0.000640 0.000112 0.001226 542 1090 2 4
275 A543D -230 -262 -275 -434 -450 -285 -459 -42 0.0919765 0.3013699 0.5988258 0.0532674 6.3 6.2 6.0 4.1 6.1 4.0 8.8 0.001074 0.0010650 0.001064 0.000541 0.001048 0.000520 0.001633 6.7 6.6 6.4 4.1 6.5 3.9 9.7 0.000660 0.0006560 0.000643 0.000110 0.000639 0.000104 0.001224 459 752 3 8
276 A6234 -146 -114 -100 -13 -276 -106 -260 0 0.1135029 0.3463796 0.6555773 0.1184918 9.4 9.4 9.2 7.9 9.3 7.8 11.1 0.000692 0.0006850 0.000659 0.000264 0.000671 0.000251 0.001143 10.3 10.3 10.1 8.6 10.2 8.5 12.2 0.000605 0.0006040 0.000596 0.000056 0.000588 0.000053 0.001155 293 2221 7 6
277 A712D -230 -255 -265 -419 -451 -276 -461 -37 0.0821918 0.2798434 0.5753425 0.0350215 6.0 5.9 5.6 4.4 5.9 4.3 7.9 0.001032 0.0010190 0.001000 0.000556 0.001003 0.000529 0.001546 6.3 6.3 6.1 4.5 6.2 4.4 8.4 0.000745 0.0007400 0.000720 0.000275 0.000725 0.000266 0.001236 461 312 2 6
278 B0712 -234 -268 -282 -430 -458 -292 -467 -44 0.0939335 0.3072407 0.6066536 0.0594917 7.0 6.9 6.8 5.1 6.9 5.0 9.0 0.000932 0.0009170 0.000879 0.000461 0.000901 0.000438 0.001464 7.6 7.5 7.5 5.5 7.5 5.4 9.9 0.000574 0.0005730 0.000590 0.000042 0.000557 0.000039 0.001109 467 1858 4 7
279 B0F3B -203 -141 -121 -12 -370 -128 -341 0 0.1604697 0.4227006 0.7005871 0.2198181 9.0 8.9 8.7 7.4 8.9 7.2 10.9 0.000918 0.0009110 0.000891 0.000527 0.000897 0.000513 0.001339 9.8 9.7 9.6 7.9 9.7 7.8 11.9 0.000626 0.0006230 0.000631 0.000092 0.000607 0.000087 0.001170 406 0 1 5
280 B1311 -146 -150 -153 -244 -284 -160 -286 -14 0.0665362 0.2309198 0.5283757 0.0097511 7.1 7.1 7.0 5.8 7.1 5.7 8.5 0.000620 0.0006130 0.000600 0.000388 0.000605 0.000377 0.000879 7.8 7.7 7.7 6.3 7.7 6.2 9.3 0.000355 0.0003520 0.000346 0.000156 0.000346 0.000148 0.000562 291 1660 4 4
281 B6069 -74 -75 -75 -131 -143 -79 -143 -6 0.0704501 0.2250489 0.5244618 0.0111567 5.9 5.9 5.8 4.6 5.8 4.6 7.2 0.000952 0.0009470 0.000917 0.000352 0.000928 0.000343 0.001572 6.1 6.1 6.0 4.6 6.0 4.6 7.6 0.000782 0.0007740 0.000755 0.000274 0.000758 0.000257 0.001316 147 661 2 9
282 C0102 -232 -190 -173 -24 -438 -183 -416 0 0.1017613 0.3228963 0.6262231 0.0797689 8.3 8.2 8.1 6.6 8.2 6.5 10.2 0.000623 0.0006140 0.000600 0.000383 0.000606 0.000367 0.000895 9.0 8.9 8.7 7.1 8.9 7.0 11.1 0.000619 0.0006150 0.000586 0.000090 0.000599 0.000082 0.001158 463 1463 4 4
283 C0D60 -76 -81 -83 -138 -150 -86 -150 -8 0.0724070 0.2407045 0.5459883 0.0163044 6.6 6.6 6.6 5.2 6.6 5.1 8.1 0.000908 0.0009050 0.000905 0.000224 0.000883 0.000218 0.001607 7.2 7.2 7.2 5.5 7.1 5.5 8.9 0.000639 0.0006380 0.000633 0.000090 0.000621 0.000081 0.001190 153 1478 6 5
284 C3530 -145 -164 -173 -276 -285 -180 -289 -22 0.0763209 0.2720157 0.5929550 0.0428823 4.1 4.0 4.0 2.6 4.0 2.6 5.6 0.001048 0.0010340 0.001005 0.000551 0.001017 0.000529 0.001596 3.9 3.9 3.9 2.2 3.8 2.2 5.8 0.000935 0.0009210 0.000895 0.000466 0.000906 0.000444 0.001452 290 671 2 5
285 C667D -175 -205 -218 -336 -344 -225 -350 -34 0.0958904 0.3091977 0.6223092 0.0734522 5.2 5.2 5.0 3.5 5.1 3.4 7.1 0.001295 0.0012820 0.001274 0.000812 0.001265 0.000785 0.001829 5.5 5.4 5.3 3.6 5.3 3.5 7.5 0.000739 0.0007310 0.000734 0.000278 0.000716 0.000268 0.001230 350 1118 6 7
286 D2B53 -288 -109 -84 -12 -354 -89 -299 0 0.4814090 0.6908023 0.8532290 0.9845599 9.2 9.1 8.9 7.5 9.0 7.3 11.2 0.001193 0.0011820 0.001169 0.000725 0.001166 0.000700 0.001698 9.9 9.7 9.5 7.9 9.7 7.7 12.2 0.000935 0.0009250 0.000887 0.000533 0.000912 0.000516 0.001375 576 987 2 10
287 D353A -327 -314 -308 -82 -634 -323 -620 -6 0.0606654 0.2289628 0.5303327 0.0101233 6.7 6.6 6.5 5.2 6.6 5.1 8.5 0.000388 0.0003800 0.000349 0.000092 0.000370 0.000079 0.000712 7.3 7.2 6.9 5.6 7.1 5.5 9.3 0.000363 0.0003610 0.000365 -0.000026 0.000349 -0.000033 0.000759 654 1663 5 9
288 D6642 -352 -379 -395 -640 -690 -412 -704 -43 0.0626223 0.2426614 0.5596869 0.0191186 6.1 6.0 5.7 4.5 6.0 4.4 8.1 0.000599 0.0005900 0.000571 0.000310 0.000580 0.000293 0.000920 6.3 6.2 6.0 4.3 6.1 4.2 8.6 0.000644 0.0006390 0.000623 0.000307 0.000628 0.000298 0.001000 705 747 4 4
289 D7A14 -268 -254 -248 -191 -517 -260 -500 -4 0.0724070 0.2465753 0.5459883 0.0155395 7.1 7.0 6.8 5.3 6.9 5.2 9.1 0.000682 0.0006730 0.000661 0.000221 0.000659 0.000208 0.001176 7.6 7.5 7.2 5.6 7.4 5.5 9.9 0.000632 0.0006280 0.000605 0.000222 0.000615 0.000210 0.001063 535 1461 2 3
290 E022A -172 -156 -148 -13 -333 -157 -321 -1 0.0704501 0.2504892 0.5694716 0.0248034 7.6 7.6 7.6 6.6 7.6 6.6 8.7 0.000112 0.0001090 0.000091 -0.000116 0.000102 -0.000121 0.000351 8.3 8.3 8.3 7.1 8.2 7.0 9.6 0.000208 0.0002060 0.000207 -0.000135 0.000196 -0.000137 0.000558 344 722 3 4
291 E0472 -340 -458 -494 -664 -672 -505 -680 -125 0.1839530 0.4579256 0.7240705 0.2847776 5.3 5.3 5.1 3.0 5.2 2.9 7.9 0.001242 0.0012320 0.001210 0.000734 0.001215 0.000716 0.001785 5.6 5.6 5.4 3.1 5.5 2.9 8.5 0.000857 0.0008470 0.000804 0.000436 0.000833 0.000419 0.001317 680 2414 6 7
292 E1154 -154 -185 -199 -294 -302 -206 -307 -31 0.0998043 0.3287671 0.6457926 0.1013623 3.2 3.2 3.1 1.8 3.1 1.8 4.6 0.000909 0.0008860 0.000841 0.000434 0.000869 0.000402 0.001466 3.3 3.3 3.2 2.0 3.2 1.9 4.7 0.000139 0.0001300 0.000112 -0.000130 0.000121 -0.000146 0.000441 307 629 3 6
293 E1B15 -309 -93 -62 -10 -356 -66 -291 0 0.5283757 0.7553816 0.8982387 1.3077307 8.7 8.7 8.4 7.2 8.6 7.0 10.6 0.001128 0.0011140 0.001080 0.000670 0.001098 0.000644 0.001631 9.1 9.0 8.9 7.3 9.0 7.1 11.3 0.000719 0.0007090 0.000694 0.000350 0.000697 0.000327 0.001117 618 1851 4 2
294 E1D7D -126 -88 -74 -12 -231 -79 -214 0 0.1526419 0.4129159 0.7005871 0.2155194 9.4 9.3 9.2 7.9 9.3 7.8 11.1 0.001024 0.0010150 0.001011 0.000731 0.001006 0.000715 0.001347 10.1 10.0 10.0 8.4 10.0 8.3 12.1 0.000959 0.0009500 0.000931 0.000677 0.000941 0.000663 0.001274 252 1014 3 9
295 E2204 -340 -409 -438 -640 -668 -452 -679 -73 0.1076321 0.3365949 0.6457926 0.1006191 5.7 5.6 5.5 3.6 5.5 3.5 8.1 0.000907 0.0008990 0.000891 0.000452 0.000884 0.000435 0.001389 5.8 5.7 5.5 3.4 5.6 3.2 8.6 0.000971 0.0009640 0.000953 0.000513 0.000948 0.000501 0.001452 679 859 4 5
296 E6D47 -350 -457 -501 -686 -692 -514 -700 -85 0.1213307 0.3992172 0.7142857 0.2141896 4.1 4.0 3.9 2.2 4.0 2.1 6.3 0.000681 0.0006630 0.000611 0.000158 0.000644 0.000127 0.001267 4.0 3.9 3.8 1.6 3.9 1.4 6.7 0.000841 0.0008320 0.000794 0.000290 0.000814 0.000275 0.001428 700 0 1 5
297 E7E64 -365 -383 -388 -489 -710 -404 -726 -49 0.0724070 0.2504892 0.5499022 0.0191771 6.7 6.6 6.5 4.5 6.5 4.3 9.3 0.000704 0.0006980 0.000702 0.000226 0.000683 0.000212 0.001207 7.2 7.1 6.8 4.5 7.0 4.3 10.2 0.000658 0.0006550 0.000637 0.000111 0.000638 0.000101 0.001216 730 1485 3 8
298 F1071 -213 -184 -171 -12 -407 -181 -389 0 0.0861057 0.2876712 0.5988258 0.0484110 8.3 8.2 8.1 6.7 8.2 6.6 10.0 0.000624 0.0006160 0.000601 0.000417 0.000609 0.000404 0.000854 9.0 8.9 8.9 7.2 8.9 7.1 11.0 0.000503 0.0004980 0.000499 0.000283 0.000491 0.000274 0.000738 426 711 5 6
299 F1555 -223 -194 -181 -36 -427 -191 -408 -1 0.0880626 0.2915851 0.5949119 0.0470253 7.7 7.6 7.5 6.2 7.6 6.1 9.5 0.000768 0.0007600 0.000742 0.000332 0.000746 0.000320 0.001234 8.3 8.2 8.0 6.6 8.2 6.5 10.4 0.000589 0.0005850 0.000577 0.000197 0.000573 0.000191 0.000994 446 321 2 7
300 F5F25 -234 -310 -336 -455 -464 -345 -469 -73 0.1565558 0.4266145 0.7162427 0.2399924 4.8 4.8 4.7 3.0 4.7 2.9 6.8 0.001162 0.0011480 0.001118 0.000656 0.001131 0.000628 0.001707 5.1 5.1 4.9 3.1 5.0 3.0 7.4 0.000676 0.0006710 0.000682 0.000213 0.000657 0.000202 0.001157 469 1407 5 7
301 03596 -112 -82 -71 -12 -209 -76 -195 0 0.1350294 0.3835616 0.6810176 0.1703523 9.4 9.4 9.3 8.0 9.3 7.9 11.0 0.001098 0.0010870 0.001058 0.000711 0.001074 0.000691 0.001519 10.2 10.2 10.0 8.6 10.1 8.5 12.1 0.000777 0.0007700 0.000755 0.000444 0.000759 0.000433 0.001138 225 2187 5 0
302 13726 -179 -184 -186 -278 -349 -195 -352 -18 0.0645793 0.2270059 0.5303327 0.0088941 6.9 6.8 6.7 5.3 6.8 5.2 8.6 0.000721 0.0007180 0.000717 0.000294 0.000704 0.000286 0.001164 7.5 7.4 7.2 5.7 7.4 5.6 9.4 0.000609 0.0006080 0.000604 0.000069 0.000591 0.000061 0.001152 358 1933 4 0
303 2184D -310 -334 -344 -409 -604 -357 -616 -45 0.0782779 0.2700587 0.5616438 0.0275510 6.7 6.6 6.5 4.3 6.5 4.2 9.4 0.000880 0.0008770 0.000845 0.000234 0.000856 0.000223 0.001538 7.1 7.0 6.7 4.3 6.9 4.2 10.3 0.000660 0.0006560 0.000640 0.000105 0.000639 0.000097 0.001223 620 1307 2 2
304 41B20 -215 -161 -140 -13 -403 -149 -379 0 0.1193738 0.3659491 0.6731898 0.1437202 8.8 8.8 8.7 7.3 8.7 7.2 10.5 0.000623 0.0006140 0.000601 0.000360 0.000605 0.000345 0.000917 9.5 9.4 9.3 7.7 9.4 7.6 11.5 0.000450 0.0004440 0.000428 0.000211 0.000436 0.000202 0.000709 430 1813 5 1
305 B1757 -156 -153 -151 -47 -304 -159 -299 -6 0.0645793 0.2211350 0.5205479 0.0079590 6.0 5.9 5.7 4.6 5.9 4.6 7.6 0.001092 0.0010820 0.001056 0.000617 0.001067 0.000597 0.001596 6.2 6.1 6.0 4.7 6.1 4.6 8.0 0.000764 0.0007590 0.000759 0.000336 0.000744 0.000326 0.001213 313 2925 5 4
306 C6F06 -282 -241 -227 -153 -530 -238 -501 -1 0.1135029 0.3326810 0.6203523 0.0819105 7.4 7.3 6.9 5.4 7.2 5.3 9.7 0.001330 0.0013130 0.001272 0.000774 0.001295 0.000752 0.001944 8.0 7.8 7.5 5.8 7.8 5.6 10.6 0.000735 0.0007290 0.000723 0.000270 0.000714 0.000258 0.001214 564 1825 4 3
307 D0701 -100 -92 -88 -14 -193 -93 -187 -2 0.0724070 0.2485323 0.5577299 0.0205242 8.2 8.2 8.1 7.0 8.1 7.0 9.5 0.000612 0.0006060 0.000592 0.000329 0.000597 0.000316 0.000920 8.9 8.8 8.8 7.5 8.8 7.5 10.3 0.000380 0.0003800 0.000373 0.000016 0.000369 0.000014 0.000742 199 3228 6 0